【发布时间】:2012-04-01 08:51:12
【问题描述】:
是否有将一系列数字表示为频谱图的 Matlab 代码?
每个样本所代表的时间间隔是相同的,理想情况下,这也可以用于轴刻度。
例如:
spec({1 2 3 2 1 2 3 2}, 0.1 seconds)
或
spec(my_data.txt, 10 Hz)
等等……
【问题讨论】:
标签: matlab signal-processing fft spectrogram
是否有将一系列数字表示为频谱图的 Matlab 代码?
每个样本所代表的时间间隔是相同的,理想情况下,这也可以用于轴刻度。
例如:
spec({1 2 3 2 1 2 3 2}, 0.1 seconds)
或
spec(my_data.txt, 10 Hz)
等等……
【问题讨论】:
标签: matlab signal-processing fft spectrogram
如果你看tftb工具箱,tfrspwv是一个非常复杂和精确的频谱图代码,在线tfrspwv.m代码中有一个运行脚本示例,用于在Matlab中制作频谱图。
【讨论】:
如果您有信号处理工具箱,那么您可以使用spectrogram() 函数。例如:
T = 0:0.001:2;
X = chirp(T,100,1,200,'q');
spectrogram(X,128,120,128,1E3);
(取自该文档页面的示例。)
数值参数分别为窗口长度、重叠长度、FFT长度和采样频率。
【讨论】:
cell2mat 似乎太过分了;如果你想要一个普通的数组,只需使用方括号。
X = [1 2 3 4 5 6]; spectrogram(X,...); 应该可以正常工作。一般来说,你应该cell arrays(即使用{}声明的数组)除非你真的需要它们,因为它们搞砸了各种各样的事情。