0

我有一个包含 736 个温度读数的向量,6 月至 8 月之间每 3 小时一个,因此 6 月至 8 月每天 8 个。

我需要对这个向量应用傅里叶分析。我已经把它标准化了。我已经到处搜索了(因为我真的不懂matlab),我所看到的只是这些分析,其中有迹象表明你已经有一个样本可以与之进行比较(比如1000Hz不断出现)。采样间隔为 3 小时,采样时间为 90 天。我不知道该怎么做。任何帮助都会有帮助。

谢谢你,我很绝望。

4

1 回答 1

4

FFT 运算实际上与输入采样率无关。采样率仅在执行 FFT 后用于解释输出的频率。

所以,基本上你可以对你的向量进行 FFT,它将你在离散时刻的 736 个样本转换为离散频率的 736 个样本。这些频率由下式给出

F(k) = Fs * k / Nfft

其中 Fs 是采样率,Nfft 是 FFT 点数。FFT 的输出向量将是复数。在大多数情况下,您会希望利用输出的幅度来产生与每个频率的能量成正比的值。

MATLAB 代码可能如下所示:

x = %your input vector
Nfft = length(x);
Fs = 1 / (60 * 60 * 3);  %1 / 3hrs
Xk = fft(x);
k = 0 : Nfft-1;
Fk = Fs * k / Nfft;  %frequency vector

%plot frequency versus magnitude in dB scale
Plot(Fk, 20 * log10(abs(Xk)));

您还需要注意其他几个问题:

  • 假设您的输入是实值,FFT 输出向量的后半部分将是前半部分的镜像。在这种情况下,只需要输出的前半部分,为您提供从 0 到 Fs/2 的频率

  • Fs/2,即奈奎斯特速率,是可以由以 Fs 采样的信号表示的最大频率。因此,例如,如果样本之间的 3 小时内有温度波动,则 3 小时的采样周期无法准确捕获此信息。

我遗漏了很多细节,但我试图给你足够的信息来获得频率幅度图,而不会使事情不必要地复杂化。

于 2013-11-03T01:50:14.407 回答