快速傅立叶变换FFT的实现
2016-11-25 12:36
555 查看
使用Matlab软件来做频谱分析。
题目:已知连续信号x(t) = cos(200πt) + sin(100πt) + cos(50πt) ,用FFT对该信号做频谱分析。
Matlab参考程序如下:
![](http://img.blog.csdn.net/20161125123400519?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
经验证,频谱与实际要求相符。
题目:已知连续信号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频谱图结果如下所示:
经验证,频谱与实际要求相符。
相关文章推荐
- C实现 快速傅立叶变换FFT FFT-1D FFT-2D 源代码
- 快速傅立叶变换(FFT)的C++实现
- 快速傅立叶变换(FFT)的C++实现与Matlab实验
- 快速傅立叶变换(FFT)的C#代码
- C# 实现 FFT 正反变换 和 频域滤波
- 比较好的C语言实现FFT程序,加入了时间测试。
- 快速傅里叶变换(FFT)算法C++实现代码
- FFT算法实现
- FFT原理及实现(Radix-2)
- FFT算法8点12位硬件实现 (verilog)
- FFT算法的一种FPGA实现
- 快速傅立叶变换(FFT)的C#代码
- FFT实现逆FFT
- 16点基4DIT-FFT实现
- FFT实现——有趣的移位寄存流水线形式
- 快速傅立叶(FFT)算法实现
- 用递归程序来实现1D-FFT
- 快速傅里叶变换(FFT)算法C++实现代码
- 整数乘法---FFT 的递归实现
- FFT变换的MATLAB实现