matlab实现FT
时间: 2023-08-23 21:11:45 浏览: 243
引用\[1\]:在Matlab中实现FT算法可以使用dft和fft两种方法。dft算法利用dft的定义公式进行程序设计,其中WN=exp(-j2pi/N)。而fft算法是dft的一种快速算法,通过利用旋转因子的特性将长序列的dft分解为几个短序列的dft。具体实现时,可以使用基2的dit-fft算法,将N=2^M点的dft计算分解为M级运算,每级有N/2个蝶形运算。\[1\]
引用\[2\]:在Matlab中测试原有fft()函数和自己编写的testfft()函数对相同向量的运行时间,可以发现原有的用机器语言编写的FFT程序运行速度更快。可以使用以下代码进行测试:
k = 1:2^10;
x = 0.998.^k;
tic, X = fft(x); toc
tic, X = testfft(x); toc
其中,fft()是Matlab自带的FFT函数,testfft()是自己编写的FFT函数。\[2\]
引用\[3\]:具体实现FT算法的代码如下:
tic; %开始计时
N=12;
n=0:N-1;
k=0:N-1;
xn=cos(n*pi/6);
subplot(3,1,1);
stem(n,xn);
title('cos(n*pi/6)');
W=exp(-j*2*pi/N);
kn=n'*k;
Xk=xn*(W.^kn);
subplot(3,1,2);
stem(n,Xk);
title('N=12');
N=100;
n=0:N-1;
k=0:N-1;
xn=cos(n*pi/6);
xn=\[xn(1:1:12),zeros(1,N-12)\]; %补零到N个
W=exp(-j*2*pi/N);
kn=n'*k;
Xk=xn*(W.^kn);
subplot(3,1,3);
stem(n,Xk);
title('补零到N=100');
toc; %结束计时
补零后,实际上是对DFT结果进行插值,克服了栅栏效应,使谱外观平滑化。\[3\]
#### 引用[.reference_title]
- *1* *3* [matlab编写程序实现dft和fft算法(不使用matlab自带的函数)](https://blog.csdn.net/zrh86/article/details/124424843)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [FFT的MATLAB实现](https://blog.csdn.net/lili12232253/article/details/84667280)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文