概述
FFT算法的应用
- 一、用N点的复数FFT计算2N点的实数序列
- 二、已知Z变换,计算N点IFFT与序列
一、用N点的复数FFT计算2N点的实数序列
N=64;
n=0:N-1;
n1=2*n;
n2=2*n+1;
n3=0:2*N-1;
xn1=cos(2*pi*7*n1/N)+1/2*cos(2*pi*19*n1/N);
xn2=cos(2*pi*7*n2/N)+1/2*cos(2*pi*19*n2/N);
xn3=cos(2*pi*7*n3/N)+1/2*cos(2*pi*19*n3/N);
%构造复数序列,由N点计算两个实序列
xn=xn1+1i*xn2;
%一次fft
Xk=fft(xn);
kk=mod(-n,N)+1;
Xkk=conj(Xk(kk));
X1=1/2*(Xk+Xkk);
X2=1/2/1i*(Xk-Xkk);
%由N点计算2N点
Xk1=X1+exp(-1i*pi*n/N).*X2;
Xk2=X1-exp(-1i*pi*n/N).*X2;
X=[Xk1,Xk2];
k=0:2*N-1;
Xk=abs(X);
subplot(2,1,1)
stem(k,Xk);
title("X(k)=DFT[x(n)]2N");
xlabel("k");ylabel("|x(k)|");
%一次2N点
subplot(2,1,2);
stem(n3,abs(fft(xn3)));
title("2N点FFT的结果");
xlabel("k");ylabel("|x(k)|");
将原长度为2N的实序列通过分成两个长度为N的实序列,构成一个新的长度为N的复数序列,计算得到其N点DFT的结果。通过乘、加减、圆周平移时反、共轭等运算可以得到这两个序列的DFT。再通过这两个N点DFT的一些运算即可得到原长度为2N的实序列的DFT。
程序通过一次DFT运算实现了只使用一次N点的FFT和其他运算得到了2N点的DFT。通过和直接进行2N的DFT对比,结果完全一致。
二、已知Z变换,计算N点IFFT与序列
N=64;
k=0:N-1;
xk=1./(1-0.8*exp(-1i*2*pi*k/N));
xn=ifft(xk,N);
stem(k,abs(xn));
xlabel("k");ylabel("|x(n)|");
disp(xn)
x(n)结果如下:
列 1 至 7
1.0000 - 0.0000i 0.8000 + 0.0000i 0.6400 + 0.0000i 0.5120 + 0.0000i 0.4096 + 0.0000i 0.3277 + 0.0000i 0.2621 + 0.0000i
列 8 至 14
0.2097 + 0.0000i 0.1678 + 0.0000i 0.1342 + 0.0000i 0.1074 - 0.0000i 0.0859 + 0.0000i 0.0687 - 0.0000i 0.0550 - 0.0000i
列 15 至 21
0.0440 - 0.0000i 0.0352 - 0.0000i 0.0281 - 0.0000i 0.0225 - 0.0000i 0.0180 - 0.0000i 0.0144 - 0.0000i 0.0115 - 0.0000i
列 22 至 28
0.0092 - 0.0000i 0.0074 - 0.0000i 0.0059 - 0.0000i 0.0047 - 0.0000i 0.0038 - 0.0000i 0.0030 - 0.0000i 0.0024 - 0.0000i
列 29 至 35
0.0019 - 0.0000i 0.0015 - 0.0000i 0.0012 - 0.0000i 0.0010 + 0.0000i 0.0008 + 0.0000i 0.0006 + 0.0000i 0.0005 + 0.0000i
列 36 至 42
0.0004 + 0.0000i 0.0003 + 0.0000i 0.0003 + 0.0000i 0.0002 + 0.0000i 0.0002 + 0.0000i 0.0001 + 0.0000i 0.0001 + 0.0000i
列 43 至 49
0.0001 + 0.0000i 0.0001 + 0.0000i 0.0001 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 - 0.0000i 0.0000 + 0.0000i
列 50 至 56
0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i
列 57 至 63
0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i
列 64
0.0000 - 0.0000i
最后
以上就是传统金毛为你收集整理的FFT算法的应用【数字信号处理三】一、用N点的复数FFT计算2N点的实数序列二、已知Z变换,计算N点IFFT与序列的全部内容,希望文章能够帮你解决FFT算法的应用【数字信号处理三】一、用N点的复数FFT计算2N点的实数序列二、已知Z变换,计算N点IFFT与序列所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复