两正弦加一噪声信号的频谱分析
《MATLAB R2016a完全自学一本通》455页,例14-19,下面的命令对一个以50Hz和120Hz为主要成分的信号进行傅里叶变换。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步