我有一个 2 列向量,其中包含数据子集的时间和速度,如下所示:
5 40
10 37
15 34
20 39
等等。我想要对速度进行傅立叶变换以获得频率。我将如何使用快速傅里叶变换(fft)来做到这一点?
如果我的矢量名称是sampleData,我已经尝试过
fft(sampleData);
但这给了我一个实数和虚数的向量。为了能够获得合理的数据来绘制,我将如何去做呢?
傅里叶变换将产生一个复向量,当你得到一个频率向量时,每个频率都有一个频谱相位。这些阶段非常重要! (它们包含时域信号的大部分信息,没有它们您将看不到干扰效应等......)。如果你想绘制功率谱,你可以
plot(abs(fft(sampleData)));
为了完成这个故事,您可能需要进行 fftshift,并生成一个频率向量。这是更详细的代码:
% Assuming 'time' is the 1st col, and 'sampleData' is the 2nd col:
N=length(sampleData);
f=window(@hamming,N)';
dt=mean(diff(time));
df=1/(N*dt); % the frequency resolution (df=1/max_T)
if mod(N,2)==0
f_vec= df*((1:N)-1-N/2); % frequency vector for EVEN length vector
else
f_vec= df*((1:N)-0.5-N/2);
end
fft_data= fftshift(fft(fftshift(sampleData.*f))) ;
plot(f_vec,abs(fft_data))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)