您的位置:首页 > 其它

快速傅立叶变换FFT的实现

2016-11-25 12:36 555 查看
使用Matlab软件来做频谱分析。

题目:已知连续信号x(t) = cos(200πt) + sin(100πt) + cos(50πt) ,用FFT对该信号做频谱分析。

Matlab参考程序如下:

clear; close all
fs = 400; T = 1 / fs;
Tp = 0.04; N = Tp * fs;
N1 = [N,4*N,8*N];
st = ['|X1(jf)|';'|X4(jf)|';'|X8(jf)|'];
for m = 1 : 3
n = 1 : N1(m);
xn = cos(200*pi*n*T) + sin(100*pi*n*T) + cos(50*pi*n*T) + cos(50*pi*n*T);
Xk = fft(xn,4096);
fk = [0:4095] / 4096 / T;
subplot(3,2,2*m-1)
plot(fk,abs(Xk)/max(abs(Xk)));ylabel(st(m,:))
if m == 1
title('矩形窗截取');
end
end
for m = 1 : 3
n = 1 : N1(m);
wn = hamming(N1(m));
xn = (cos(200*pi*n*T) + sin(100*pi*n*T) + cos(50*pi*n*T)).*wn';
Xk = fft(xn,4096);
fk = [0:4095] / 4096 / T;
subplot(3,2,2*m)
plot(fk,abs(Xk)/max(abs(Xk)));ylabel(st(m,:))
if m == 1
title('哈明窗截取');
end
end
频谱图结果如下所示:



经验证,频谱与实际要求相符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息