ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:301.78KB ,
资源ID:4135128      下载积分:8 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4135128.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(用MATLAB实现线性卷积运算-北邮学习资料.docx)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

用MATLAB实现线性卷积运算-北邮学习资料.docx

1、 信息与通信工程学院 数字信号处理实验报告 实验题目:用MATLAB实现线性卷积运算 班 级: 2008211113 姓 名: 学 号: 日 期: 2010年5月 索 引 一、实验原理 1 1、算法产生背景 1 2、算法基本思想 1 1)重叠相加法 1 2)重叠保留法 2 二、流程图设计 3 1、重叠相加法 3 2、重叠保留法 4 三、MATLAB源代码 5 1、重叠相加源码 5 2、重叠保留源码 6 四、实验结果与分析 7 ①调用conv()计算 7 ②测试重叠相加算法 7 ③测试

2、重叠保留算法 7 五、讨论与总结 8 1、算法效率分析: 8 A.重叠相加法 8 B.重叠保留法 10 C.调用conv() 11 D.综合对比分析 12 2、故障和问题分析 13 ①分段问题 13 ②运算完整性问题 13 ③算法硬件实现 13 一、实验原理 1、算法产生背景 DFT是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的。DFT具备明确且合理的物理含义,适合应用于数字系统,同时可以方便地由计算机进行运算。 对于线性非移变离散系统,可由线性卷积表

3、示时域输入输出关系,即 通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT的一个重要应用。 2、算法基本思想 1)重叠相加法 重叠相加法是将待过滤的信号分割成长为N的若干段,如图1所示,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。 具体算法实现原理如图2所示,建立缓存序列,每次输入N点序列,通过计算x(n)和h(n) 的循环卷积实现线性卷积运算,将缓存的M-1点序列和卷积结果相加,并输出前N点作为计算结果,同时缓存后M-1点,如此循环,直至所有分段计

4、算完毕,则输出序列y(n)为最终计算结果。 0 N-1 N 2N-1 2N 图1. 重叠相加法的分段示意图 L点循环卷积 M-1点缓存 1 L=N+M-1 h(n) 前N点 后M-1点 y(n) 图2. 重叠相加法算法示意图 2)重叠保留法 重叠保留法相当于将xl(n)和h(n)作循环卷积,然后找出循环卷积中相当于线性卷积的部分。在这种情况下,将序列y(n)分为长为N的若干段(如图3所示),每个输入段和前一段有M-1个重叠点 。此时只需要将

5、发生重叠的前M-1个点舍去,保留重叠的部分并输出,则可获得序列y(n),算法如图4所示。 0 N-1 N 2N-1 2N 图3. 重叠保留法的分段示意图 序列衔接 M-1点缓存 每N点输入 h(n) y(n) 图4. 重叠保留法算法示意图 后M-1点 M+N-1点循环卷积 后N点 二、流程图设计 1、重叠相加法 2、重叠保留法

6、 三、MATLAB源代码 1、重叠相加源码 function y = overlap_add(x,h,N) %重叠相加法实现 %核心为将高点数DFT转化为低点数DFT,且用循环卷积计算线性卷积 M = length(h); %获得h(n)的长度 if N

7、 T = ceil(Lx/N); %确定分段数T t = zeros(1,M-1); %初始化序列t(n) x = [x,zeros(1, (T+1)*N-Lx)]; %不足的分段补零 y = zeros(1, (T+1)*N); %生成输出序列y(n),长度足够长 for i=0:1:T xi=i*N+1; x_seg = x(xi:xi+N-1); %选择低点数计算时的分段x(n) y_seg = circular_conv(x_se

8、g,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); %重新对t(n)赋值为保留的后M-1点 y(xi:xi+N-1) = y_seg(1:N); %直接输出前N个点 end y=y(1:Lx+M-1); %取出最终的输出序列 function y = circular_conv( x1,x2,L) % 利用循环卷积计算线性卷积 % 循环卷积采用频域计算方法,已FFT代替DFT,降低运算量

9、 X1k = fft(x1,L); %x1做L点FFT X2k = fft(x2,L); %x1做L点FFT Yk = X1k.*X2k; %频域相乘 y = ifft(Yk); %FFT反变换得循环卷积结果 2、重叠保留源码 function y = overlap_save(x,h,N) %重叠保留法实现 %核心为将高点数DFT转化为低点数DFT,且用循环卷积计算线性卷积 Lx = length(x); %获得x

10、n)的长度 M = length(h); %获得h(n)的长度 if N

11、 = zeros(1, (T+1)*N); for i=0:1:T xi = i*N+1; x_seg = [t,x(xi:xi+N-1)]; %确定每个低点数卷积的分段x(n) t = x_seg(N+1:N+M-1); %为t(n)重新赋值为后M-1个点的值 y_seg = circular_conv(x_seg,h,L); %循环卷积计算线性卷积 y(xi:xi+N-1)=y_seg(M:N+M-1);%直接取出后N个点作为一次计算的输出

12、 end y=y(1:Lx+M-1); %取出实际的输出序 四、实验结果与分析 对两种算法采用同一序列进行测试分析。 设xn=n+1,0≤n≤9;hn={-2,0,+2} 。计算yn=xn*h(n) 。 ①调用conv()计算 首先利用Matlab对两序列直接运算,得出正确结果。 代码为:x=[1:1:10],h=[-2,0,+2],conv(x,h) 结果为: [ -2 -4 -4 -4 -4 -4 -4 -4 -4 -4 18 20 ] ②测试重叠相加算法

13、 代码为:overlap_add(x,h,6) 结果为:[ -2.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000 18.0000 20.0000 ] ③测试重叠保留算法 代码为:overlap_save(x,h,4) 结果为:[ -2.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000 18.00

14、00 20.0000 ] 由此可见,两种算法运行正常,计算正确。更多的测试也正确。算法正确。 五、讨论与总结 1、算法效率分析: A.重叠相加法 分段长度 序列长度 4 10 100 1000 10000 10 0.013151 0.000266 0.018963 0.027378 0.074834 100 0.001173 0.000605 0.000319 0.000917 0.010007 1000 0.009936 0.002824 0.00092 0.000746 0.013927 10000

15、 0.074181 0.027121 0.006682 0.00406 0.009922 100000 0.606933 0.265476 0.052852 0.030106 0.048245 1000000 6.033528 2.483526 0.396206 0.246052 0.33387 10000000 59.93776 25.10466 3.897444 2.328122 3.231499 由上表和图1可以看出,随着数据规模增大,运算耗时呈线性增长,因而算法的时间复杂度为O(n),其中n为数据规模。因而重叠相加算法具有可行性

16、和实用性。再从算法的空间复杂度来看,由于分配的缓存空间只由分段长度确定,不随数据规模的变化而变化,因而空间复杂度为O(1)。综合考察,重叠相加法具有较好的时间和空间复杂度。当数据量达到千万量级时,运算延时最少大约为2.328s,可运用于对信号的实时处理。 B.重叠保留法 分段长度 序列长度 4 10 100 1000 10000 10 0.000512 0.000225 0.001249 0.000881 0.008454 100 0.001014 0.000514 0.000272 0.000836 0.008802 1000 0.0

17、09297 0.002402 0.000787 0.000687 0.011107 10000 0.05674 0.023194 0.006122 0.003941 0.011083 100000 0.558865 0.216818 0.039175 0.026044 0.042643 1000000 5.221879 2.144089 0.357428 0.236277 0.327539 10000000 52.2464 22.02215 3.593282 2.335725 3.251762 由上表和图2可以看出,同重叠相

18、加法类似,随着数据规模的增大,运算耗时呈线性增长,算法的时间复杂度为O(n),其中n为数据规模。同样由于分配的缓存空间只由分段长度确定,空间复杂度为O(1)。综合考察,重叠保留法也具有较好的时间和空间复杂度。当数据量达到千万量级时,运算延时最少大约为2.335s,可运用于对信号的实时处理。 C.调用conv() 序列长度 10 100 1000 10000 100000 1000000 1000000 运算耗时(s) 0.000113 0.000081 0.000117 0.000275 0.002492 0.032155 0.32588

19、 由上表和图3可以看出,调用系统自带的线性卷积运算函数conv()计算线性卷积,运算时间和序列长度也有线性关系。时间复杂度为O(n)。但此时的信号处理延时很小,当数据达到千万量级时,延时仅为0.325s,实时性非常好! D.综合对比分析 分段长度 平均耗时(s) 4 10 100 1000 10000 重叠相加 9.52527 3.983497 0.624769 0.376769 0.531758 重叠保留 8.299243 3.487056 0.571188 0.372056 0.523

20、056 调用conv() 0.05163 0.05163 0.05163 0.05163 0.05163 重叠保留法和重叠相加法运行效率与分段长度相关性较强。分段数和卷积运算的序列长度为非线性关系,且当分段长度维持在大约1000点左右时,获得最高的平均运行效率。内置函数conv()运行效率与分段数无关。重叠相加和重叠保留两者效率几乎一致。 在实际应用中,重叠保留和重叠相加主要用于实施信号处理,因而输入序列是连续输入,在保证实时性的要求下,输入序列的分段不能太长。设想实际情况如下:设语音信号采样率为8KHz,相当于每秒输入8000点序列,由重叠相加法处理(

21、重叠保留法类似)。如若分段为1000点,考虑实际系统中为实时输出(Matlab算法模拟里面是将所有序列保存之后再输出),因而每分段处理延时0.00406/8s,又接收1000点延时为1/8s,故处理总延时为0.1255075s。此时接收延时起主要作用,影响实时性。减小接收延时则需要减小分段点数,同时使得处理延时增加。接收延时和处理延时两者是不可调和的矛盾。实际处理时,可根据实时性要求,折中选择分段点数,既满足实时性要求,又降低系统开销。 2、故障和问题分析 ①分段问题 初始时没有考虑到分段长度的限制,导致用户输入分段小于系统冲击响应h(n)的长度时运算出错。后增加一个判断语句,当出现前述

22、情况时,自动提升分段点数,问题解决。 ②运算完整性问题 在写好代码之后的测试中,出现了一个十分奇怪的现象,即:当输入点数为1000、10000或者更大时卷积运算最后M-1个结果为0。反复测试发现,不仅1000和10000,只要是分段数N的倍数的输入点数都存在同样问题,而其他非倍数的输入,运算与conv() 函数运算结果完全一致。通过设置断点,逐句调试,最终发现问题的症结,当输入序列为N的倍数时,最后的一段卷积实际上没有做。因而将循环次数增加1,将最后一次保留的M-1个点补全N个0,做最后一次分段卷积。修改后,测试结果正确。 ③算法硬件实现 第一,重叠保留和重叠相加算法在硬件实现时将算法

23、中的临时变量都化为缓存,所以考虑缓存的大小限制,不能将输入序列分段过长,否则所需的缓存将加大,成本加大。 第二,接收延时和处理延时两者存在矛盾,减少分段长度,可减少接收延时但会增加处理延时,同理,增大分段长度,可减少处理延时,但将增加接收延时。具体实现时需要综合考虑两者的作用,去最优化值。 第三,算法实际实现时,可实时输出处理过的分段序列,与直接线性卷积相比,实时性大大增强,需要的计算单元特别是系统缓存明显减少。因而实用性很强。 第四,<报告结束> 分段卷积能灵活计算长输入序列对IIR滤波器的响应,且延时较小,因而很常用。从硬件实现角度讲,重叠保留和重叠相加法效率几乎一致。 第五,测试算法性能时采用较短的h(n)序列,主要考虑到分段卷积应用在单位冲击响应较短的IIR滤波器。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服