还剩2页未读,继续阅读
文本内容:
第四章离散傅里叶变换的快速算法及其他变换把N=32点的时间序列x0,x1,2,31排成倒位序序列
4.1答案略根据时间抽选奇偶分解FFT算法的一般规则画出N二32点时抽选偶分解FFT
4.2算法蝶形流程图,并分析其运算工作量答案略某台计算机平均一次复乘需要100ns,一次复加需20ns,今用来进行N=
10244.3点DFT计算问直接算法需要多少时间?时间抽选奇偶分解FFT算法需要多少时间?DFT时间为
125.81s,FFT时间为
0.72s分析自然顺序从零开始倒位序程序原理并用MATLAB编制程序在计算机上进
4.4行实际验证答案略5将一个倒位序的序列[例如N=8时,x04x2x6x15x⑶x⑺]
4.5通过倒位序程序之后,变成按自然顺序排列的序列从理论上对上述事实加以说明并在计算机上利用倒位序程序加以验证答案略6根据频率抽选奇偶分解FFT算法一般规则画出N二32点FFT算法形流程图
4.6并分析运算工作量答案略用图4-4计算xn=Rsn的DFT,再把图4-4改成IDFT流程图进行IDFT运算
4.7用实际结果说明IDFT的正确性答案略解程序及运行结果如下
4.8循环卷积子函数1function fn=circonvtxl,x2,N函数实现输入序列和的循环卷积,为冠出序列%circonvt xlx2fn为循环卷积长度%N判断输入信号的长度if lengthxlNIlengthx2N%的长度必须大于输入数据的长度;error,Nendxl=|xl zeros1N-lcngthxl;t fx2=[x2,zeros1N-length x2;tm=0N-l;x=zerosN N;tfor n=O N-1x,n+l=x2mod n-m N+ltend;fn=xl*x;主函数请输入序列:);function[y;=ovrlpadd(xL)x=inpu(x(,请输入序列h=input y);的长度lenx=length x;%xM=length h;%h的长度%圆周卷积点数.即每一个输出序列的长度Yi%求余m=remlenx,L;if m~=0%末尾补零,使每段长度为x=[x zeros1,L-m];NK=floor lenx/L+1;%段数(请输入段长L=input L’);else x=x;K=floor lenx/L;endytemp=eros1,N1-L;%N1-N为重叠部分,使其初始化为零Znl=1;n2=L;for k=1Kxk=x nln2;Yk,=circonvtxk,h Nl;tfor i=1N1-LYk,i=Yk,i+ytempi;ytempi=Yk,i+L;endynl n2+M-l=Yk l Nl;tnl=nl+L;n2=n2+L;end stemy;title ovrlpadd;请输入又序列[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]请输入y序列请输入段长L4ans=333-14-15-162function y]=ovrlpaddfft x,h,L x=inpiH请输入x序列;h=input「请输入y序列\L=input请输入段长「;lenx=lengthx;%x的长度M=lengthh;%h的长度N1=L+M-1;%满足循环卷积等于线性卷积的长度Nl=2*ceillog10Nl/logl02;m=rem lenxL;th=ffth,Nl;if m~=0x=[zerosl,L-mJ;%末尾补零,使每段长度为NxK=floor lenx/L+1;%段数else x=x;K=floor lenx/L;%段数endyteTnp=erosl Nl-L;%N1-N为重奏部分,使其初始化为零Z tnl=1;n2=L;fork=l Kz=x nln2xkxffi Nl;XfYk,=realifftxk.*h;for i=lNl-LYk,i=Yk,i+ytempi;ytempi=Yk,i+L;endynl n2+Nl-L=Yk lNl;%输出结果nl=nl+L;n2=n2+L;endy=y1:lenx+M-1;stemy;title^ovrlpadd-lfTt;请输入x序列[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]请输入y序列请输入段长4ans=
3.
00003.
00003.0000L
00002.
00003.
00003.
00003.
00003.
00003.
00003.
00003.0000Columns13through
193.
00003.
00003.
00003.0000-
14.0000-
15.0000-
16.0000Columns1through12。