序列的卷积和快速卷积运算的编程实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计名称:数字信号处理课程设计
课程设计题目:序列的卷积和快速卷积运算的编程实现
初始条件:
1. Matlab6.5以上版本软件;
2. 课程设计辅导资料:“Matlab 语言基础及使用入门”、“数字信号处理原理与实现”、“Matlab 及在电
子信息课程中的应用”等;
3. 先修课程:信号与系统、数字信号处理、Matlab 应用实践及信号处理类课程等。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1. 课程设计时间:1周(课内实践);
2. 课程设计内容:序列的卷积和快速卷积运算的编程实现,具体包括:直接卷积及应用、快速卷积方
法及实现、两者的比较分析等;
3. 本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设
计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析和总结; 4. 课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括:
① 目录; ② 与设计题目相关的理论分析、归纳和总结; ③ 与设计内容相关的原理分析、建模、推导、可行性分析; ④ 程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结; ⑤ 课程设计的心得体会(至少500字); ⑥ 参考文献; ⑦ 其它必要内容等。
附——具体设计内容:
1. 已知线性非移变系统的h(n)=[6,2,3,6,4,2],输入为x(n)=[1,2,3,4,5]; (1) 用人工计算系统输出y(n); (2) 编写程序输出y(n),并作图。
2. 用函数conv 和FFT 计算长为1000序列的卷积,比较其计算时间。
3. 用快速卷积法计算()0.9()n M x n R n =和()()N h n R n =两个序列的卷积;并测试直接卷积和快速卷时间。
摘要
卷积在数字信号处理中有着重要的作用。然而直接计算卷积的运算量非常大,它与序列长度的平方成反比,因此制约了卷积的应用。快速卷积是实现卷积的一种快速算法,减少了运算量,节约了时间。通过分析我们可在MATLAB里编程实现。
关键词:卷积;快速卷积;MATLAB。
目录
一、直接卷积及应用 (1)
1、卷积的定义 (1)
2、卷积的运用 (1)
二、快速卷积方法及实现 (2)
1、快速卷积运算原理 (2)
2、实现方法 (3)
(1)重叠相加法 (3)
(2)重叠保留法 (3)
三、直接卷积和快速卷积的分析比较 (4)
四、程序设计及仿真结果分析 (4)
五、心得体会 (11)
六、参考文献 (12)
一、直接卷积及应用
1、卷积的定义
设:f(x),g(x)是R1上的两个可积函数,作积分:
可以证明,关于几乎所有的实数x,上述积分是存在的。这样,随着x的不同取值,这个积分就定义了一个新函数h(x),称为函数f与g的卷积,记为h(x)=(f*g)(x)。2、卷积的运用
卷积是数字信号处理中最常见,也是最重要的运算之一,利用卷积可以实现相关计算和FIR滤波等等,正因为卷积如此重要,所以半个世纪以来,学者们提出了多种不同卷积实现结构。
设输入信号为x(t),其频谱函数为X(jΩ)该信号通过滤波器h(t)后,其输出信号y(t)的频谱函数Y(jΩ)是频谱函数x(jΩ)与滤波器的频谱函数H(jΩ)的乘积,即:
Y(jΩ)=X(jΩ)H(jΩ)
而在时域,输出信号y(t)实际是输入信号x(t)与滤波器h(t)的卷积,就是说频谱函数的乘积相当于时间函数的卷积,反之亦然,即:
y(t)=x(t)*h(t)
在数字信号处理系统中,无论在时域还是频域都离不开卷积运算和快速傅里叶运算,Matlab具有强大的矩阵运算能力。方便实用的绘图功能和语言的高度集成性。在DSP开发中,使用Matlab可以快速对系统进行仿真运算。
二、快速卷积方法及实现
1、快速卷积运算原理
在信号处理中,许多具体的应用是以线性卷积为基础的。当满足一定条件时,可以用圆周卷积来计算线性卷积。由圆周卷积定理知道,圆周卷积可以借助DFT 来运算,因此DFT 的快速算法FFT 就可以用来计算线性卷积。
设x 1(n )与x 2(n )分别是长度为N 与M 的有限长序列,它们的线性卷积为y l (n ),L 点的圆周卷积为y c (n ),它们的关系为 y c (n )=∑y l (n+rL)R l (n)
由上式可知圆周卷积是线性卷积以L 为周期进行延拓后,再取主值序列的结果。当满足L>M+N-1时,周期延拓不发生混叠,就可以用圆周卷积来计算线性卷积。由圆周卷积定义可知,可以用FFT 分别求出x 1(n )与x 2(n )的L 点DFT X 1(k )与X 2(k ),即 X 1(k )=DFT[ x 1(n )], X 2(k )=DFT[ x 2(n) ],
再用IFFT 计算X 1(k )X 2(k)的L 点IDFT 得y c (n ),也就是x 1(n )与x 2(n )的线性卷积为y l (n),即
y l (n)=y c (n)=IDFT[X 1(k)·X 2(k )] 下图为上述过程的示意图 x 1
(n)
y c (n )=y l (n)
x 2(n)
2、实现方法
在实际应用中,常遇到的问题是参加卷积的两个序列的长度相差较大,这样长度小的序列就需补很多的零点,这样就需要大的存储量,运算时间也会变长。常用的解决方法有两种,一是重叠想加法,另一种是重叠保留法。
(1)重叠相加法
设序列x
1(n)为无限长序列,序列x
2
(n)是长度为M的序列,由x
1
(n)构成长
度为N的有限长序列
x
1k (n)= x
1
(n), kN = 0 其他(式2.1)因此 x 1k (n)= ∑x 1k (n) (式2.2) 将式子代入卷积公式有 Y(n)=x 1(n)*x 2 (n)=x 2 (n)* ∑x 1k (n) =∑x 1k (n)*x 2 (n)= ∑y k (n) (式2.3) 式中, y k (n)=x 2 (n)*x k (n)= ∑x 2 (m)x k (n-m) (式2.4) 式(2.3)表示,计算x 1(n)与x 2 (n)的线性卷积y(n)时,可以先分段计算y k (n),然 后再叠加起来即可。因为y k (n)的长度为M+N-1,因此y k (n)的后N-1个值与y k+1 (n)的前 N-1个值重叠,因此必须把y k (n)的后N-1个值与y k+1 (n)前的N-1个值相加,因为称为重 叠相加法。 (2)重叠保留法 为了克服重叠相加法中分段卷积后任然需要相加的缺点,人们提出了重叠保留法。 与重叠相加法不同的是,在对无限长序列x 1(n)的后M-1个抽样值与后一段x k+1 (n)的前M-1 个抽样值相同,且分段的长度选圆周卷积的长度L,这样形成的分段序列为