频谱图、时间与频率定位以及信号长度

信息处理 频谱 时频 频谱图 stft
2022-02-18 21:24:18

所以我在概念上遇到了一些麻烦,希望有人可以为我解决问题。这很长,对此我深表歉意,但我想提供尽可能多的信息,以便我的困惑的根源可能会暴露出来。

我有一个采样率为74767samplessec. 我想在 matlab 中获取这个信号的频谱图,但我真的只对第一个中的内容感兴趣12第二。现在,如果我在 0.5 秒后扔掉所有东西并尝试使用时频工具箱计算频谱图,我将链接发布到下面。(我需要使用这个)我的内存不足。为了解决这个问题,我决定只保留每个X样本,以便我使用更少的数据。我认为,这将有效地将我的采样频率降低一倍X. 那就是说我0.5秒后先扔掉所有东西,然后只保留everXth样本。我的总信号长度等于:

N=74767×0.5X

因此,我的新采样频率应该是这个值的两倍,假设是我在一秒钟内收集的样本数量。

fs=2×(74767×0.5X)

但是,我有两个问题。


首先是我对频谱图的频率分辨率和箱数有点困惑。

我必须将要计算的频率箱数传递给频谱图计算。我总是将信号的长度传递给它,如上所述N=74767×0.5X. 现在,我知道要以适当的比例绘制它,我需要知道每个频率仓的频率分辨率是多少。这将始终为 2,因为频率分辨率为:

freqres=fsN=1T

如上所示,我对此进行了推理,但似乎如果我增加N从而以更高的速率进行采样,那么我将在半秒的时间范围内每秒有更多的样本,并且我的频率分辨率应该更高!毕竟,我的意思是,如果我从 0 到 0.5 秒看,并且不必除以X由于内存限制,那为什么我没有更高的频率分辨率呢?我会有更多的样品!


我遇到的第二个问题是理解频谱图相对于频率区间数量的分辨率N. 显然我可以选择X改变N. 作为测试,我包括N=3000N=8000以下。作为N变大我开始失去频域的精度。这是有道理的,因为我知道不确定性原理告诉我们频域与时域的精度之间存在平衡。但是,我怎么知道什么是好的值N是?我真正关心的最高频率内容是 25 次谐波(60Hz×25=1500Hz)。这是否意味着我应该选择一个值X这使我的采样频率是奈奎斯特的两倍(在我的情况下是3000Hz)。这样做我得到:

3000Hz=2×(74767×0.5X)

X=74767×0.5150025

但是,当我绘制出我在频域中的定位很好,但我在时域中的定位非常糟糕时,我还在下面包含了它的纯文本链接截图。


那么,什么是决定我在时域中本地化的好指标呢?我该如何调和上面看似矛盾的地方?感谢您提供任何帮助和/或建议。

N = 3000

N = 3000

N = 8000

N = 8000

N = 1495。X = 25

在此处找到图像的纯文本链接:i.stack.imgur.com/1HLTL.png

(我没有足够的业力来发布超过 2 个链接)。

TFT 工具箱:tftb.nongnu.org/

1个回答
  1. 频率分辨率保持不变,因为增加采样率会增加可以分辨的最大频率。例如,采样率加倍将使最大频率加倍。

  2. 调整频谱图窗口的大小,并在此基础上设置 FFT 点的数量。命令是

[S,F,T] = spectrogram(X,WINDOW,NOVERLAP,NFFT,Fs)

  • X是信号
  • WINDOW是窗口的大小,初学者试试 1000
  • NOVERLAP是窗口滑动时的重叠量。信号长度 / (WINDOW-NOVERLAP) 大约是您将拥有的时间点数。
  • NFFT是 FFT 点的数量。我将使用的最大值是 WINDOW 值的一半,比如 500。
  • Fs是采样频率。输入这个,F将作为频率点和T时间点出现,无需您自己计算。

您不应该内存不足 - 我通常会根据数百万点的数据计算频谱图,您只需要调整输入参数即可。例如,放置WINDOW= 1000 和NOVERLAP= 999 将为每个样本提供一个时间点,在您的情况下,输出频谱图将是 74767 宽!试试上面的设置,看看效果如何。

如果你WINDOW放大你的频率分辨率会增加但你的时间分辨率会降低。