线性卷积运算课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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,可运用于对信号的实时处理。

相关文档
最新文档