序列的卷积和快速卷积运算的编程实现

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

相关文档
最新文档