【含源代码】北邮dsp-matlab实验一重叠相加和重叠保留

【含源代码】北邮dsp-matlab实验一重叠相加和重叠保留

ID:24486683

大小:610.78 KB

页数:9页

时间:2018-11-14

【含源代码】北邮dsp-matlab实验一重叠相加和重叠保留_第1页
【含源代码】北邮dsp-matlab实验一重叠相加和重叠保留_第2页
【含源代码】北邮dsp-matlab实验一重叠相加和重叠保留_第3页
【含源代码】北邮dsp-matlab实验一重叠相加和重叠保留_第4页
【含源代码】北邮dsp-matlab实验一重叠相加和重叠保留_第5页
资源描述:

《【含源代码】北邮dsp-matlab实验一重叠相加和重叠保留》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Dsp-matlab实验实验一:重叠相加法和重叠保留法的实现设计报告课题名称:学生姓名:班级:班内序号:学号:日期:2015/06/15目录一、实验原理·········································二、Matlab源代码·································三、Matlab运行结果····························四、Matlab结果分析····································五、遇到的难题与解决方法·····

2、·······················参考文献·························································一、实验原理1、算法来源DFT是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的。DFT具备明确且合理的物理含义,适合应用于数字系统,同时可以方便地由计算机进行运算。对于线性非移变离散系统,可由线性卷积表示时域输入输出关系,即x(n)*h(n)=y(n)通常采用循环

3、卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT的一个重要应用。2、两种算法基本思想1)重叠相加法重叠相加法和重叠保留法的实质都是以逐段地方式通过循环卷积来完成线性卷积的计算。将输入序列x(n)进行分段,每段长为N,且N≥M(M为有限长因果序列h(n)的长度),x(n)逐段与h(n)进行循环卷积,在重叠保留法中需在x(n)序列首部加入长度为M-1的0序列。在算法中,在获得N个点的输入后,进行N+M-1点循环卷积计算,之后输出N个点。

4、通过for循环逐段进行循环卷积,使用fft和ifft计算两个有限长序列的N点循环卷积结果。重叠相加法是将待过滤的信号分割成长为N的若干段,如图1所示,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。每次输入N点序列,通过计算x(n)和h(n)的循环卷积实现线性卷积运算,将缓存的M-1点序列和卷积结果相加,并输出前N点作为计算结果,同时缓存后M-1点,如此循环,直至所有分段计算完毕,则输出序列y(n)为最终计算结果。2)重叠保留法重叠保留法相当于将x?(?)和h(?)作循环卷积,然后找出循环卷积中相当于线性卷

5、积的部分。在这种情况下,将序列y(n)分为长为N的若干段(如图3所示),每个输入段和前一段有M-1个重叠点。此时只需要将发生重叠的前M-1个点舍去,保留重叠的部分并输出,则可获得序列y(n),算法如图4所示。二、Matlab源代码1)重叠相加function[Y]=overplxqy(x,h,N)%利用循环卷积计算线性卷积%循环卷积采用频域计算方法,已FFT代替DFT,降低运算量Lx=length(x);%序列长度M=length(h);%h(n)长度x=[x,zeros(1,N-1)];t=zeros(1,M-1);Y=ze

6、ros(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);%FFT反变换得循环卷积结果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);%取出最终的输出序列重叠相加法源代码法1)重叠funct

7、ion[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);%FFT反变换得循环卷积结果endY=Y(:,M:N)';Y=(Y(:))'%

8、取出最终的输出序列重叠保留法源代码保留法三、Matlab运行结果由此可见,两种算法运行正常,计算正确。更多的测试也正确。算法正确。四、Matlab结果分析重叠相加算法具有可行性和实用性。再从算法的空间复杂度来看,由空间复杂度为O(1)。可以看出,同重叠相加法类似,随着数据规模

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。