我是靠谱客的博主 传统金毛,最近开发中收集的这篇文章主要介绍FFT算法的应用【数字信号处理三】一、用N点的复数FFT计算2N点的实数序列二、已知Z变换,计算N点IFFT与序列,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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与序列所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部