收藏 分享(赏)

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

上传人:fcgy86390 文档编号:3677359 上传时间:2018-11-15 格式:DOCX 页数:9 大小:610.78KB
下载 相关 举报
【含源代码】北邮dsp-MATLAB实验一重叠相加和重叠保留.docx_第1页
第1页 / 共9页
【含源代码】北邮dsp-MATLAB实验一重叠相加和重叠保留.docx_第2页
第2页 / 共9页
【含源代码】北邮dsp-MATLAB实验一重叠相加和重叠保留.docx_第3页
第3页 / 共9页
【含源代码】北邮dsp-MATLAB实验一重叠相加和重叠保留.docx_第4页
第4页 / 共9页
【含源代码】北邮dsp-MATLAB实验一重叠相加和重叠保留.docx_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、Dsp-matlab 实验实验一:重叠相加法和重叠保留法的实现设计报告课题名称: 学生姓名: 班 级: 班内序号: 学 号: 日 期:2015/06/15 目录一、实验原理二、Matlab 源代码三、Matlab 运行结果四、 Matlab 结果分析五、遇到的难题与解决方法参考文献一、实验原理1、算法来源DFT 是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的。DFT 具备明确且合理的物理含义,适合应用于数字系统,同时可以方便地由计算机进行运算。对于线性非移变离散系统,可由线性卷积表示时域输入输

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

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

4、,将序列 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=zeros(1,Lx+M-1);a=floor(Lx/N);f

5、or k=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)重叠保留法functionY=overlpsav(x,h,N)Lx=length(x);M=length(h);M1=M -1;L

6、=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);for k=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(:)%取出最终的输出序列重叠保留法源代码三、Matlab运行结果由此可见,两种算法运行正常,计算正确。更多的测试也正确。算法正确。四、Matlab结果分析重叠相加算法具有可行性和实用性。再从算法的空

7、间复杂度来看,由空间复杂度为 O(1)。可以看出,同重叠相加法类似,随着数据规模的增大,运算耗时呈线性增长,算法的时间复杂度为 O(n),其中 n 为数据规模。同样由于分配的缓存空间只由分段长度确定,空间复杂度为 O(1)。综合考察,重叠保留法也具有较好的时间和空间复杂度。x(n)长度为 N, y(n)长度为 M;计算线性卷积 y(n) ,y(n)可视为 N 个序列的叠加结果,序列长度为 M,所以每生成一个序列需完成 M 次乘法,共需完成 MN 次乘法运算。这 N 个序列依次向右移动一位故需(N-1) (M-1)次加法运算。按照 fft 和 ifft 计算线性卷积时,设 L=N=M-1,整个运算过程包含了 2 个 fft、一个 ifft 和 L次乘法运算,所以,按基 2 频域抽选算法实现 fft 或 ifft,共需完成 (3Llog2L/2+L)次乘法和(3Llog2L)次加法运算。五、遇到的难题与解决办法最开始遇到的问题是 matlab 软件安装问题,因为电脑环境的特殊性尝试了多次才成功;在建模过程中发现对实验原理因为学习时间过长有些不熟悉,于是翻书查阅复习,熟悉实验原理;在实验过程中因为粗心,忘记保存,没有打符号等等之类问题使系统开始报错,细心调试之后成功建模参考文献dsp-重叠保留法与重叠相加法来自百度文库数字信号处理第二版科学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 规范标准 > 实验

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报