【发布时间】:2016-10-17 03:17:34
【问题描述】:
我有一个信号a(t),这是我绘制它时的样子:
我正在尝试在 MATLAB 中使用 FFT 提取此信号的特征频率。我是这样做的
Y=fft( a );
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
plot(P1)
现在,事实证明,如果我使用 Y=fft( a ),当我绘制频谱时,我只会得到接近 0 的频率。如果我使用Y=fft( a(1:3:end) ),那么我会得到 0 和 个非零频率的频率。
- 为什么当我对完整数据集执行 FFT 时,这些非零频率不会出现,而只会在我每 4 个点采样时出现?
- 非零频率实际上包含在我的数据集中还是人工制品?
【问题讨论】:
-
L是什么?您能否提供光谱图或a的数据,或生成a的方法? -
通过每 4 个点(实际上,看起来您每 3 个点),您正在对数据进行二次采样。频率高于 newSampleRate/2 的任何信号能量都会混叠。您确实说原始光谱仅显示接近零的能量,但看起来您仅绘制了光谱的前 L/2 点。我假设L应该是a的整个长度?但是如果 L 更小,那可能会解释你的问题。要真正回答这个问题,我们需要您提供更多信息(例如 a 和 L)。
标签: matlab signal-processing fft