【问题标题】:Suggestions for defining limits of frequencies in Matlab Spectrogram function?在 Matlab Spectrogram 函数中定义频率限制的建议?
【发布时间】:2018-05-01 22:24:44
【问题描述】:

我是 Matlab 和信号处理的新手。我在定义处理频谱图的频率范围时遇到问题。当我绘制 .wav 音频数据的频谱图时,y 轴频率范围从零到大约 23 kHz。我正在寻找的有用数据在 200-400 Hz 的范围内。我的代码 sn-p 是:

[samFa, fs] = audioread('samFa.wav'); %convert audio to numerical data
samFa = samFa(:,1); %take only one channel of numerical output
spectrogram(samFA,2205,1200,12800, fs,'yaxis','MinThreshold',-80);

我不想成为一个遇到问题并立即放弃并将重复的问题发布到 stackoverflow 的菜鸟,所以我已经做了尽可能多的挖掘工作,但我无计可施。

  • 我在文档中搜索了参数或让 Matlab 仅分析数据的子集或范围的方法,但一无所获。此外,在所有示例中,频率范围似乎都会自动适应数据集。
  • 我知道可以只计算整个频率范围的频谱图,然后通过截断或手动更改绘图本身的限制来删除所有不必要的数据,但更改绘图限制对数值没有帮助数据。
  • 我搜索了许多类似的问题,从 2012 年开始一直在这里找到答案:Can I adjust spectogram frequency axes? 建议的答案是导入特定频率的向量以供频谱图分析。我尝试传递一个介于 200 和 400 之间的整数值向量以及其他一些测试范围,但得到了错误:

    Error using welchparse>welch_options (line 297)
    The sampling frequency must be a scalar.
    

    我尝试在函数的不同位置传递参数,但无济于事,并且在文档中看不到有关此参数的任何内容,这使我相信此功能可能在 2012 年到现在之间的某个时间被删除.

  • 当在不提供信号频率的情况下绘制频谱图时,Matlab 提供了一个归一化的频谱图,它只提供一个小得多的数据窗口,我可以直观地评估它以覆盖从 0:5kHz 开始的数据(音频中的泛音伪影),所以我知道 matlab 没有找到任何高于此范围的数据以使频率范围达到 20kHz
  • 我一直在尝试为这个项目学习一些信号处理,所以我相信奈奎斯特频率应该是傅里叶变换能够分析的最大频率,是采样频率的一半。我的记录频率是 44,100 Hz 采样,而频谱图的范围是 22 或 23 kHz 左右,这让我相信是 Matlab 注意到了我的采样频率,并假设它需要分析这么高的范围。

对于我正在做的工作,我需要生成数千个频谱图,然后通过进一步分析进行处理,因此 Matlab 处理这么多不必要的数据非常耗时,我希望会有一些Matlab 中的功能以某种方式解决这个问题。

很抱歉,这篇文章很长,但我想充分解释我的问题,并表明我在寻求帮助之前已尽我所能解决问题。非常感谢。

【问题讨论】:

    标签: matlab audio signal-processing spectrogram


    【解决方案1】:

    获取轴柄并在那里设置可视范围:

    spectrogram(samFA,2205,1200,12800, fs,'yaxis','MinThreshold',-80);
    ax=gca;
    ylim(ax, [0.2,0.4]); %kHz
    

    如果您想计算特定频率范围以节省时间,您最好使用goertzel

    f = 200:10:400;
    freq_indices = round(f/fs*N) + 1;   
    dft_data = goertzel(data,freq_indices);
    

    【讨论】:

    • 请注意,如果您需要超过 log(N) 个 Goertzel 滤波器来满足您的频率分辨率要求,则使用大小为 N 的 FFT 并丢弃所有不需要的频谱通常会更快。
    猜你喜欢
    • 2019-12-03
    • 2011-02-21
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    相关资源
    最近更新 更多