两正弦加一噪声信号的频谱分析

《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。

原文地址:https://www.cnblogs.com/zhangziyan/p/8797255.html