zhangziyan

《MATLAB R2016a完全自学一本通》455页,例14-19,下面的命令对一个以50Hz和120Hz为主要成分的信号进行傅里叶变换。

代码如下:

Fs=1000;
T=1/Fs;
L=1000;
t=(0:L-1)*T;
x=0.7*sin(2*pi*50*t)+sin(2*pi*120*t);
y=x+2*randn(size(t));
subplot(121);
plot(Fs*t(1:50),y(1:50));
title(\'原始信号\');
xlabel(\'time (ms)\');
NFFT=2^nextpow2(L);
Y=fft(y,NFFT)/L;
f=Fs/2*linspace(0,1,NFFT/2+1);
subplot(122);
plot(f,2*abs(Y(1:NFFT/2+1)));
title(\'幅值谱\');
xlabel(\'Frequency (Hz)\');
ylabel(\'|Y(f)|\');

  结果图如下:

注释:

快速傅氏变换的点数n要取最接近数据长度的2的整数次方。命令是2^nextpow2(N),其中N是实际数据长度,因为这样的n可以使fft更快。比如N=1021,执行n=2^nextpow2(N)后,n=2^10=1024。

第二幅图中,因为要画单边幅值,所以×2。

分类:

技术点:

相关文章: