快速傅立叶变换FFT的实现

来源:互联网 发布:软件模块化设计 实例 编辑:程序博客网 时间:2024/05/29 13:46

使用Matlab软件来做频谱分析。

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

Matlab参考程序如下:

clear; close allfs = 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('矩形窗截取');    endendfor 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('哈明窗截取');    endend
频谱图结果如下所示:

经验证,频谱与实际要求相符。


0 0
原创粉丝点击