【问题标题】:Spectrogram example in MatlabMatlab中的频谱图示例
【发布时间】: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


【解决方案1】:

如果你看tftb工具箱,tfrspwv是一个非常复杂和精确的频谱图代码,在线tfrspwv.m代码中有一个运行脚本示例,用于在Matlab中制作频谱图。

【讨论】:

    【解决方案2】:

    如果您有信号处理工具箱,那么您可以使用spectrogram() 函数。例如:

    T = 0:0.001:2;
    X = chirp(T,100,1,200,'q');
    spectrogram(X,128,120,128,1E3); 
    

    (取自该文档页面的示例。)

    数值参数分别为窗口长度、重叠长度、FFT长度和采样频率。

    【讨论】:

    • 对于外部数据,它是 X = cell2mat({1 2 3 etc...}) 或粘贴到工作区窗口中。
    • @alan2here:什么是“外部数据”? cell2mat 似乎太过分了;如果你想要一个普通的数组,只需使用方括号。
    • 外部数据,你知道的,来自其他地方的数据。就像我从互联网上下载而不是在 Matlab 中生成的数字列表一样。 cell2mat 也有效,使用方括号代替生成“X 必须是向量(行或列)”。因为 X 最终成为频谱图的错误类型。
    • @alan2here: X = [1 2 3 4 5 6]; spectrogram(X,...); 应该可以正常工作。一般来说,你应该cell arrays(即使用{}声明的数组)除非你真的需要它们,因为它们搞砸了各种各样的事情。
    猜你喜欢
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 2011-03-18
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多