线性卷积运算课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
索引
一、实验原理 (1)
1、算法产生背景 (1)
2、算法基本思想 (1)
1)重叠相加法 (1)
2)重叠保留法 (2)
二、流程图设计 (3)
1、重叠相加法 (3)
2、重叠保留法 (4)
三、MATLAB源代码 (5)
1、重叠相加源码 (5)
2、重叠保留源码 (6)
四、实验结果与分析 (7)
①调用CONV()计算 (7)
②测试重叠相加算法 (7)
③测试重叠保留算法 (7)
五、讨论与总结 (8)
1、算法效率分析: (8)
A.重叠相加法 (8)
B.重叠保留法 (9)
C.调用conv() (10)
D.综合对比分析 (11)
2、故障和问题分析 (12)
①分段问题 (12)
②运算完整性问题 (12)
③算法硬件实现 (12)
一、实验原理
1、算法产生背景
DFT 是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的。DFT 具备明确且合理的物理含义,适合应用于数字系统,同时可以方便地由计算机进行运算。
对于线性非移变离散系统,可由线性卷积表示时域输入输出关系,即
()()*()y n x n h n
通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT 的一个重要应用。
2、算法基本思想
1)重叠相加法
重叠相加法是将待过滤的信号分割成长为N 的若干段,如图1所示,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。
具体算法实现原理如图2所示,建立缓存序列,每次输入N 点序列,通过计算x(n)和h(n) 的循环卷积实现线性卷积运算,将缓存的M-1点序列和卷积结果相加,并输出前N 点作为计算结果,同时缓存后M-1点,如此循环,直至所有分段计算完毕,则输出序列y(n)为最终计算结果。
0 N-1 N 2N-1 2N
图1. 重叠相加法的分段示意图
2)重叠保留法
重叠保留法相当于将x l (n)和h(n)作循环卷积,然后找出循环卷积中相当于线性卷积的部分。在这种情况下,将序列y(n)分为长为N 的若干段(如图3所示),每个输入段和前一段有M-1个重叠点 。此时只需要将发生重叠的前M-1个点舍去,保留重叠的部分并输出,则可获得序列y(n),算法如图4所示。
L 点循环卷积
M -1点缓存
L=N+M-1
h(n)
前N 点 后M-1点
y(n)
图2. 重叠相加法算法示意图
0 N-1 N 2N-1 2N
图3. 重叠保留法的分段示意图
序列衔接
M -1点缓存
每N 点输入
h(n)
y(n)
图4. 重叠保留法算法示意图
后M-1点
M+N-1点
循环卷积
后N 点
二、流程图设计
1、重叠相加法
2、重叠保留法
三、MATLAB源代码
1、重叠相加源码
2、重叠保留源码
四、实验结果与分析
对两种算法采用同一序列进行测试分析。
设x(n)=(n+1),0≤n≤9;ℎ(n)={−2,0,+2}。计算y(n)=x(n)∗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 ]
②测试重叠相加算法
代码为: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.0000 20.0000 ]
由此可见,两种算法运行正常,计算正确。更多的测试也正确。算法正确。
五、讨论与总结
1、算法效率分析:
A.重叠相加法
由上表和图1可以看出,随着数据规模增大,运算耗时呈线性增长,因而算法的时间复杂度为O(n),其中n为数据规模。因而重叠相加算法具有可行性和实用性。再从算法的空间复杂度来看,由于分配的缓存空间只由分段长度确定,不随数据规模的变化而变化,因而空间复杂度为O(1)。综合考察,重叠相加法具有较好的时间和空间复杂度。当数据量达到千万量级时,运算延时最少大约为2.328s,可运用于对信号的实时处理。
B.重叠保留法
由上表和图2可以看出,同重叠相加法类似,随着数据规模的增大,运算耗时呈线性增长,算法的时间复杂度为O(n),其中n为数据规模。同样由于分配的缓存空间只由分段长度确定,空间复杂度为O(1)。综合考察,重叠保留法也具有较好的时间和空间复杂度。当数据量达到千万量级时,运算延时最少大约为2.335s,可运用于对信号的实时处理。