了解matlab中的归一化频率

时间:2015-03-01 20:14:16

标签: matlab signal-processing

我试图在Matlab中比较具有不同长度但相同采样率的两个信号的相干性和Welch传递函数估计。当我使用mscohere和tfestimate时,我会得到绘图与标准化频率。知道频率的上限是奈奎斯特频率(采样率的一半),下限是直流信号,我是否需要对采样的间隔进行归一化,使它们的长度相同?

换句话说,对于100秒内采样的信号,.1 xpi rad / sample =。1 xpi rad / sample对于采样超过100000秒的信号?

1 个答案:

答案 0 :(得分:3)

首先,我想向您推荐Paul R关于FFT的精彩帖子,关于每个bin对信号频率内容的意义 - How do I obtain the frequencies of each value in a FFT? < / p>

基本上,信号的持续时间并不重要。重要的是为FFT选择多少分并确保每个信号具有相同采样率。如果是这种情况,那么您将能够正确地比较两个信号之间的频率分布。请记住,FFT是一种频率分解算法。它将您的信号分解为正弦曲线的总和(或精确的复指数),因此我们测量该信号中包含的每个频率的多少。如果以这种方式考虑FFT,那么你可以进行另一次飞跃,并说信号的长度没什么影响。

使用一个相当简单的例子,如果我们在1 kHz播放音调3秒钟而另一个音调在1 kHz播放10秒钟,如果你考虑一下,它不应该多长时间< / strong>那个人玩了。我们肯定知道该信号的频率分解仅由1个分量组成 - 即1 kHz的分量。因此,您可以在两个信号之间进行比较,而不管信号在彼此之间的长度 - 我们只查看信号的频率内容。

为了进一步了解这一点,回想起Paul R的帖子,假设我们有一个1024点FFT,我们的采样率为44.1 kHz。请注意,我们不关心信号的持续时间。这样,与bin映射到的频率相对应的FFT的bin编号可以总结如下:

  0:   0 * 44100 / 1024 =     0.0 Hz
  1:   1 * 44100 / 1024 =    43.1 Hz
  2:   2 * 44100 / 1024 =    86.1 Hz
  3:   3 * 44100 / 1024 =   129.2 Hz
  4: ...
  5: ...
     ...
511: 511 * 44100 / 1024 = 22006.9 Hz

如您所见,在N/2 - 1,这对应于奈奎斯特频率。另外,请注意,您只需要一半的FFT就能够重建数据。其他箱(512-1023)对应于负频率,这是FFT算法的结果(更多细节见Cooley-Tukey FFT algorithm)。

我之所以想指出这个bin到频率映射的原因是因为当我们将你的信号分解成它的频率成分时,只要采样频率和点数相同,你就会得到一个频率分解按照上面的表格,无论信号多久。因此,当您将信号分解为频域的频率时,我们只需测量您在信号中看到的特定频率的,并且与其长度无关。因此,当您将两个信号进行比较时,您将得到两个信号的频率分解,如上图和同一音符,您可以自然地比较两个信号之间的频率内容。


tl;dr

如果您不在乎阅读上述内容,那么答案就是您不需要标准化所测量信号的长度。您只需要确保采样频率以及用于分解每个信号的FFT点数在两个信号之间是相同的。