-1

随着时间的推移,我有一个 fft 数据矩阵,8192 行数据 x 600 列时间。第一列是频率标签,第一行如下所示,但实际上并不存在于数据文件中,空格也不存在,它们只是为了便于阅读而显示。

Frequency, Sec1, Sec2, Sec3...Sec600
1e8,       -95,  -90,  -92
1.1e8,    -100, -101, -103
...

它是用以下代码在matlab中绘制的 (向其他海报道歉,我抓住了错误的matlab代码)

x 是 8192 行 x 600 列的矩阵,f 是频率标签数组,FrameLength = 1,figN = 3

function [] = TimeFreq(x,f,FrameLength,figN)


 [t,fftSize] = size(x);
 t = (1:1:t) * FrameLength;

figure(figN);
mesh(f,t,x)
xlabel('Frequency, Hz')
ylabel('time, sec')
zlabel('Power, dBm')
title('Time-Freq Representation')

我无法弄清楚如何让它在 gnuplot 中工作。这是 Matlab 中的示例图像:http: //imagebin.org/253633

4

2 回答 2

0

所以这是我最终使用的 gnuplot 命令脚本。它有一些额外的元素,这些元素不在原始的 matlab 图中,但所有必需品都在那里。

set term png size 1900,1080
set datafile separator ","
set pm3d

# reverse our records so that time moves away from our perspective of the chart
set xrange[*:*] reverse

# hide parts of the chart that would make the 3d view look funny
set hidden3d

# slightly roate our perspective and compress the z axis
set view 45,75,,0.85

set palette defined (-120 "yellow", -70 "red", -30 "blue")
set grid x y z
set xlabel "time (secs)"
set ylabel "frequency"
set zlabel "dBm"

# plot all the data
set output waterfall.png
splot 'waterfall.csv' nonuniform matrix using 1:2:3 with pm3d lc palette
于 2013-04-16T16:38:27.613 回答
0

要在 gnuplot 中进行这项工作,您需要查看splot(for "surface plot") 命令。只需在终端中运行以下命令,您就可以了解很多信息:

$ gnuplot
gnuplot> help splot

具体来说,您想阅读运行显示的帮助页面(在上述之后,当提示要求输入子主题时)datafile:。这应该足以让你开始。

此外,这个问题的答案可能会有所帮助。

于 2013-04-11T22:58:44.680 回答