您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > 用matlaB分析重叠相加、重叠保留法
BuptpanshaohuaMatlab实验一重叠相加法和重叠保留法的实现学院:信息与通信工程学院班级:学号:班内序号姓名:Buptpanshaohua一.实验原理为了实现线性卷积的快速计算方法,重叠相加法和重叠保留法的实质都是以逐段地方式通过循环卷积来完成线性卷积的计算。将输入序列x(n)进行分段,每段长为N,且N≥M(M为有限长因果序列h(n)的长度),x(n)逐段与h(n)进行循环卷积,在重叠保留法中需在x(n)序列首部加入长度为M-1的0序列。在算法中,在获得N个点的输入后,进行N+M-1点循环卷积计算,之后输出N个点。通过for循环逐段进行循环卷积,使用fft和ifft计算两个有限长序列的N点循环卷积结果。二.源代码和流程图重叠相加法代码function[Y]=overpl(x,h,N)Lx=length(x);%序列长度M=length(h);%h(n)长度x=[x,zeros(1,N-1)];t=zeros(1,M-1);Y=zeros(1,Lx+M-1);a=floor(Lx/N);fork=0:aA=x(k*N+1:k*N+N);y1=fft(A,Lx+M-1);%利用fft进行运算y2=fft(h,Lx+M-1);y3=y1.*y2;q=ifft(y3,Lx+M-1);Y(k*N+1:k*N+M-1)=q(1:M-1)+t(1:M-1);Y(k*N+M:k*N+N)=q(M:N);t(1:M-1)=q(N+1:N+M-1);endY(1:Lx+M-1);对应流程图Buptpanshaohua图一图二图一:每段利用fft和ifft实现循环卷积图二:对x(n)逐段进行循环卷积然后相加得输出线性卷积结果y(n)重叠保留法代码function[Y]=overlpsav(x,h,N)Lx=length(x);M=length(h);M1=M-1;L=N-M1;h=[h,zeros(1,N-M)];x=[zeros(1,M1),x,zeros(1,N-1)];a=floor((Lx+M1-1)/(L))+1;Y=zeros(1,N);fork=0:a-1xk=x(k*L+1:k*L+N);b=fft(xk,N);C=fft(h,N);Z=b.*C;Y(k+1,:)=ifft(Z,N);endY=Y(:,M:N)';Y=(Y(:))'L点IDFTL点DFTX(n)01nN1LNML点DFTXh(n)01nM()()()ynxnhnL点循环卷积L=N+M-1(M-1)点缓存后(M-1)点前N点()yn()hn()lxnBuptpanshaohua对应流程图三.实验结果重叠相加法x=[1,2,3,4,5,6,7,8,9,10]h=[1,0,-1]N=6装成单列向量再转置成行向量输出Y中各行均去掉前M-1个样本,转置后构成新的Y把K+1×N阶输出矩阵Y初始化把x前面加上(M-1)个零将h延长至循环长度N各段搭接长度M1,有效数据长度L输入数据x长度及脉冲响应长度各段进行卷积Buptpanshaohua重叠保留法x=[1,2,3,4,5,6,7,8,9,10]h=[1,0,-1]N=4四.结果分析(有关运算量的定量分析结果)有限长因果序列x(n)h(n)的长度分别为N和M,直接计算线性卷积y(n),y(n)可视为N个序列的叠加结果,序列长度为M,所以每生成一个序列需完成M次乘法,共需完成MN次乘法运Buptpanshaohua算。这N个序列依次向右移动一位故需(N-1)(M-1)次加法运算。按照fft和ifft计算线性卷积时,设L=N=M-1,整个运算过程包含了2个fft、一个ifft和L此乘法运算,所以,按基2频域抽选算法实现fft或ifft,共需完成(3L2)次乘法和()加法运算。五.讨论总结1.N越大快算法的运算量越小,即实现重叠相加法和重叠保留法的运算量越小。2.MATLAB软件使用方法和语言不熟悉,通过查阅书籍网络解决。
本文标题:用matlaB分析重叠相加、重叠保留法
链接地址:https://www.777doc.com/doc-1572686 .html