MATLAB实现信号频谱分析(以余弦信号的FFT为例)
的有关信息介绍如下:本文将以余弦信号为例,介绍使用MATLAB进行数字信号频谱分析的方法,主要使用了fft函数与fftshift函数,并对结果作出分析。
产生余弦信号以作频谱分析:
余弦信号y=cos(2π*f*t);
信号频率为f=10Hz;
时宽:1s
采样率为fs=100Hz;
MATLAB程序:
f=10;
fs=100;
T=1;
n=round(T*fs);%采样点个数
t=linspace(0,T,n);
y=cos(2*pi*f/fs*[0:n-1]);
figure;
plot(t,y);
title('余弦信号时域');
xlabel('t/s');
ylabel('幅度');
运行结果:
用fft函数对产生的余弦信号作频谱分析:
注意:该步骤得到的是0~fs内的频谱。
MATLAB代码:
fft_y=fft(y);
f=linspace(0,fs,n);
figure;
plot(f,abs(fft_y));
title('余弦信号频谱');
xlabel('f/Hz');
ylabel('幅度');
可以看到10Hz处有峰值,90Hz的峰值是-10Hz的峰值向右频谱搬移fs=100Hz得到的。
运行结果:
用fftshift函数得到-fs/2~fs/2内的频谱:
MATLAB代码:
fftshift_y=fftshift(fft_y);
f=linspace(-fs/2,fs/2,n);
figure;
plot(f,abs(fftshift_y));
title('余弦信号频谱');
xlabel('f/Hz');
ylabel('幅度');
由于实信号频谱幅度关于原点对称,可以看到10Hz与-10Hz处的两个峰值。
运行结果: