gpt4 book ai didi

matlab - 在 Matlab Spectrogram 函数中定义频率限制的建议?

转载 作者:行者123 更新时间:2023-12-02 22:53:45 30 4
gpt4 key购买 nike

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

[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发布重复问题的noobie,所以我已经尽我所能进行了挖掘,但我无能为力。
  • 我在文档中搜索了参数或让 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 中有一些功能以某种方式解决这个问题。

    很抱歉,这篇文章很长,但我想充分解释我的问题,并表明我在寻求帮助之前已经做了尽可能多的工作来解决问题。非常感谢你。

    最佳答案

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

    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);

    关于matlab - 在 Matlab Spectrogram 函数中定义频率限制的建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47362564/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com