用matlab实现线性卷积运算

用matlab实现线性卷积运算

ID:1148983

大小:633.00 KB

页数:13页

时间:2017-11-08

用matlab实现线性卷积运算_第1页
用matlab实现线性卷积运算_第2页
用matlab实现线性卷积运算_第3页
用matlab实现线性卷积运算_第4页
用matlab实现线性卷积运算_第5页
资源描述:

《用matlab实现线性卷积运算》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、北京邮电大学实验报告实验名称:用MATLAB实现线性卷积运算学院:信息与通信工程学院班级:姓名:学号:日期:2012年5月一、实验原理1、算法产生背景DFT是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的。DFT具备明确且合理的物理含义,适合应用于数字系统,同时可以方便地由计算机进行运算。对于线性非移变离散系统,可由线性卷积表示时域输入输出关系,即()()*()ynxnhn=通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。因此,产生了重叠相加法和重叠

2、保留法两种典型的算法,用以快速计算线性卷积,成为了DFT的一个重要应用。2、算法基本思想1)重叠相加法重叠相加法是将待过滤的信号分割成长为N的若干段,如图1所示,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。具体算法实现原理如图2所示,建立缓存序列,每次输入N点序列,通过计算x(n)和h(n)的循环卷积实现线性卷积运算,将缓存的M-1点序列和卷积结果相加,并输出前N点作为计算结果,同时缓存后M-1点,如此循环,直至所有分段计算完毕,则输出序列y(n)为最终计算结果。2)重叠保留法重叠保留法相当于将xl(n)和h(n)作循环卷积,然后找出循环卷积中

3、相当于线性卷积的部分。在这种情况下,将序列y(n)分为长为N的若干段(如图3所示),每个输入段和前一段有M-1个重叠点。此时只需要将发生重叠的前M-1个点舍去,保留重叠的部分并输出,则可获得序列y(n),算法如图4所示。二、流程图设计1、重叠相加法2、重叠保留法三、MATLAB源代码1、重叠相加源码2.重叠保留源码2、四、实验结果与分析对两种算法采用同一序列进行测试分析。设56421.(56411.)=(56411.+1),0≤56411.≤9;ℎ56411.)=*−,0,+2+。计算y(n)=x(n)∗(n)。①调用conv()计算首先利用Matlab对两序列

4、直接运算,得出正确结果。代码为:x=*1:1:10+,h=*-2,0,+2+,conv(x,h)结果为:*-2-4-4-4-4-4-4-4-4-41820+②测试重叠相加算法代码为:overlap_add(x,h,6)结果为:*-2.0000-4.0000-4.0000-4.0000-4.0000-4.0000-4.0000-4.0000-4.0000-4.000018.000020.0000+③测试重叠保留算法代码为:overlap_save(x,h,4)结果为:*-2.0000-4.0000-4.0000-4.0000-4.0000-4.0000-4.0000-4.0

5、000-4.0000-4.000018.000020.0000+由此可见,两种算法运行正常,计算正确。更多的测试也正确。算法正确。-图1.重叠相加法耗时与数据规模关系图从上至下,依次为:N=4,10,100,10000,1000五、讨论与总结1、算法效率分析:由上表和图1可以看出,随着数据规模增大,运算耗时呈线性增长,因而算法的时间复杂度为O(n),其中n为数据规模。因而重叠相加算法具有可行性和实用性。再从算法的空间复杂度来看,由于分配的缓存空间只由分段长度确定,不随数据规模的变化而变化,因而空间复杂度为O(1)。综合考察,重叠相加法具有较好的时间和空间复杂度。当数据量达

6、到千万量级时,运算延时最少大约为2.328s,可运用于对信号的实时处理。由上表和图2可以看出,同重叠相加法类似,随着数据规模的增大,运算耗时呈线性增长,算法的时间复杂度为O(n),其中n为数据规模。同样由于分配的缓存空间只由分段长度确定,空间复杂度为O(1)。综合考察,重叠保留法也具有较好的时间和空间复杂度。当数据量达到千万量级时,运算延时最少大约为2.335s,可运用于对信号的实时处理。由上表和图3可以看出,调用系统自带的线性卷积运算函数conv()计算线性卷积,运算时间和序列长度也有线性关系。时间复杂度为O(n)。但此时的信号处理延时很小,当数据达到千万量级时,延时仅

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

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

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

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