北邮Matlab实验报告_第1页
北邮Matlab实验报告_第2页
北邮Matlab实验报告_第3页
北邮Matlab实验报告_第4页
北邮Matlab实验报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字信号处理Matlab实验 一 实现重叠相加和重叠保留算法,完成线性卷积的分段计算(可任意指定及);1、 对算法的概括性说明;1)重叠相加法重叠相加法是将待过滤的信号分割成长为N的若干段,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。 具体算法实现:建立缓存序列,每次输入N点序列,通过计算x(n)和h(n) 的循环卷积实现线性卷积运算,将缓存的M-1点序列和卷积结果相加,并输出前N点作为计算结果,同时缓存后M-1点,如此循环,直至所有分段计算完毕,则输出序列y(n)为最终计算结果。2)重叠保留法重叠保留法相当于将xl(𝑛)和h(𝑛)作循环

2、卷积,然后找出循环卷积中相当于线性卷积的部分。在这种情况下,将序列y(n)分为长为N的若干段,每个输入段和前一段有M-1个重叠点 。此时只需要将发生重叠的前M-1个点舍去,保留重叠的部分并输出,则可获得序列y(n)。2、 源代码及流程图;2.1 源代码:functiony = overlap_add(x,h,N)M = length(h);if N<M N = M+1;endL = M+N-1;Lx = length(x);T = ceil(Lx/N);t = zeros(1,M-1);x = x,zeros(1,(T+1)*N-Lx);y = zeros(1,(T+1)*N);for

3、i = 0:1:T xi = i*N+1; x_seg = x(xi:xi+N-1); y_seg = circular_conv(x_seg,h,L); y_seg(1:M-1) = y_seg(1:M-1)+t(1:M-1); t(1:M-1) = y_seg(N+1:L); y(xi:xi+N-1) = y_seg(1:N);endy = y(1:Lx+M-1);endfunctiony = overlap_save(x,h,N)Lx = length(x);M = length(h);if N<M N = M+1;endL = N+M-1;t = zeros(1,M-1);T =

4、 ceil(Lx/N);x = x,zeros(1,(T+1)*N-Lx);y = zeros(1,(T+1)*N);for i = 0:1:T xi = i*N+1; x_seg= t,x(xi:xi+N-1); t = x_seg(N+1:N+M-1); y_seg = circular_conv(x_seg,h,L); y(xi:xi+N-1) = y_seg(M:N+M-1);endy = y(1:Lx+M-1);endfunctiony = circular_conv(x1,x2,L)X1k = fft(x1,L);X2k = fft(x2,L);Yk = X1k.*X2k;y =

5、ifft(Yk);endn = 0:9;xn = n+1;hn = 1,0,-1;N = 6;y1 = conv(hn,xn)y2 = overlap_add(xn,hn,N)y3 = overlap_save(xn,hn,N)2.2流程图1)重叠相加法2)重叠保留法3、 实验结果;4、 结合教材3.5.1节作运算量分析;重叠相加法和重叠保留法的算法的时间复杂度均为O(n),空间复杂度均为O(1),二者都具有较好的时间和空间复杂度。5、 总结实验过程中出现的问题以及解决问题的具体措施。运算完整性问题 在写好代码之后的测试中,出现了一个十分奇怪的现象,即:当输入点数为1000、10000或者更大

6、时卷积运算最后M-1个结果为0.反复测试发现,不仅1000和10000,只要是分段数N的倍数的输入点数都存在同样问题,而其他非倍数的输入,运算与conv() 函数运算结果完全一致。通过设置断点,逐句调试,最终发现问题的症结,当输入序列为N的倍数时,最后的一段卷积实际上没有做。因而将循环次数增加1,将最后一次保留的M-1个点补全N个0,做最后一次分段卷积。修改后,测试结果正确。算法硬件实现 第一, 重叠保留和重叠相加算法在硬件实现时将算法中的临时变量都化为缓存,所以考虑缓存的大小限制,不能将输入序列分段过长,否则所需的缓存将加大,成本加大。 第二, 接收延时和处理延时两者存在矛盾,减少分段长度,

7、可减少接收延时但会增加处理延时,同理,增大分段长度,可减少处理延时,但将增加接收延时。具体实现时需要综合考虑两者的作用,去最优化值。二 周期序列的谱分析 利用DFT分析模拟信号之频谱;试验要求:1、 设定采样周期并说明原因;取T= 1/20,理由:f = 8,fs2f,所以取T = 1/20。2、 若令,确定该序列之周期并说明原因;N= 5。2/(16T)=5/4,周期为整数,所以N= 5。3、 绘制10个周期内的取值情况; 4、 令表示的主值序列,绘制,解释取值情况; 所得X1(k)取值即为x(n)的5点(一个周期内)DFT结果,为清晰谱线。5、 令表示的任一周期,绘制,解释取值情况; 所得

8、X2(k)取值与x(n)主值序列DFT结果相同。因为DFT是反映信号的频域特性,所以同为一个周期,频域特性一定相同,无论起始位置如何,其DFT情况都相同。6、 令表示的2个周期,绘制,解释取值情况(参照习题3.7、3.8或3.16分析); 所得X3(k)是在x(n)主值序列DFT结果的基础上插入取值为零的点,将点数提高至10,仍为清晰谱线。因为选取了2个周期,所以DFT点数是X1(k)的2倍。因为取的周期的整数倍,所以可以得到清晰谱线。7、 (选作)若,而M不是周期的整数倍,绘制,解释取值情况。 所得X4(k)是非周期整数倍点数的DFT,不是清晰谱线。因为选取了1.3个周期,不是周期的整数倍,

9、选取的x4(n)没有体现出x(n)的周期特性,所以得到的谱线的形状特征必然与X1(k)、X2(k)、X3(k)不同。三 梳状滤波器的应用录制一段自己的话音,时间长度及取样频率自定;对该段声音加入一次反射、三次反射和无穷多次反射。试验报告要求:1、 对试验原理的说明;回声可以认为是由原始声音衰减后的多个延迟叠加组成的,因此回声可以用延迟单元来生成。x(n)表示原始声音信号,a 为衰减系数,T 为延迟周期,回声信号 Y(n)=X(n)+a*x(nT)+a2*x(n2T)+ak*x(nkT)。Z 变换后的系统函数 H(z)可由梳状滤波器实现。本实验用MATLAB 中的filter(b,a,x)函数可

10、用来仿真差分方程 a(1)*y(n)=b(1)*x(n)+b(2)*x(n1)+.+b(nb+1)*x(nnb)a(2)*y(n1).a(na+1)*y(nna)。2、 在同一张图上,绘制原声音序列、加入一次反射后的声音序列、加入三次反射后的声音序列和加入无穷多次反射后的声音序列; 其中蓝色为原声音序列 x(n),粉红色为加入一次反射后的声音序列 x1(n),绿色为加入三次反射后的声音序列 x3(n),红色为加入无穷多次反射后的声音序列 x1(n)。3、 结合上述各序列,分析延时、衰减系数对回声效果的影响(提示:定量考察序列、和之间的区别)。延时不变时,衰减系数 a 从零增大到 1 的过程中,回声效果由差变好再变差。a 很小时,几乎听不到回声,a 在 0.5(±0.1)时,回

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论