文档详情

基于重叠加法圆周卷积的实现.doc

发布:2018-12-04约5.31千字共13页下载文档
文本预览下载声明
目 录 HYPERLINK \l _Toc251436658 摘要 Ⅰ TOC \o 1-3 \h \z \u HYPERLINK \l _Toc282344743 1 理论学习 PAGEREF _Toc282344743 \h 1 HYPERLINK \l _Toc282344744 1.1圆周卷积原理 PAGEREF _Toc282344744 \h 1 HYPERLINK \l _Toc282344745 1.2重叠相加法 PAGEREF _Toc282344745 \h 2 HYPERLINK \l _Toc282344746 1.3重叠相加法圆周卷积 PAGEREF _Toc282344746 \h 4 HYPERLINK \l _Toc282344747 1.4线性卷积、圆周卷积、重叠相加法、DFT、FFT之间的联系 PAGEREF _Toc282344747 \h 5 HYPERLINK \l _Toc282344748 2 程序设计 PAGEREF _Toc282344748 \h 6 HYPERLINK \l _Toc282344749 2.1程序设计思路 PAGEREF _Toc282344749 \h 6 HYPERLINK \l _Toc282344750 2.2程序设计流程图 PAGEREF _Toc282344750 \h 7 HYPERLINK \l _Toc282344751 2.3 程序代码 PAGEREF _Toc282344751 \h 7 HYPERLINK \l _Toc282344752 3程序调试与结果与分析 PAGEREF _Toc282344752 \h 9 HYPERLINK \l _Toc282344753 心得体会 PAGEREF _Toc282344753 \h 11 HYPERLINK \l _Toc282344754 参考文献 PAGEREF _Toc282344754 \h 12 1 理论学习 1.1圆周卷积原理 对两个N点序列和,除了可以做线性卷积外,还有一种很重要的卷积运算,就是圆周卷积。 令 则圆周卷积结果长度不变, 为N. 由上式可以得出圆周卷积与周期卷积的关系,就是有限长序列圆周卷积结果的周期延拓,等于它们周期延拓后的周期卷积。也就是说,周期卷积的主值序列,是各周期序列主值序列的圆周卷积。 若、分别是长度为N、M的序列则与线性卷积至多M+N-1个非零值,如果LM+N-1则周期延拓时必然会有一部分非零值发生混叠;只有当LM+N-1时,周期延拓才不会发生混叠。 之所以讨论用圆周卷积来计算线性卷积的条件,是因为圆周卷积可在频域下利用DFT求得,从而可采用DFT的快速算法FFT来计算,这样就可以利用FFT来计算线性卷积,大大提高运算效率。 圆周卷积的实现步骤如下图: 图1.1 圆周卷积的实现步骤 1.2重叠相加法 DFT 是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的。DFT 具备明确且合理的物理含义,适合应用于数字系统,同时可以方便地由计算机进行运算。 对于线性非移变离散系统,可由线性卷积表示时域输入输出关系,即 y(n)=x(n)*h(n) 通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。因此,产生了重叠相加法,用以快速计算线性卷积,成为了DFT 的一个重要应用。 重叠相加法是将待过滤的信号分割成长为N 的若干段,如图1 所示,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。 具体算法实现原理如图2 所示,建立缓存序列,每次输入N 点序列,通过计算x(n) 和h(n) 的循环卷积实现线性卷积运算,将缓存的M-1 点序列和卷积结果相加,并输出前N 点作为计算结果,同时缓存后M-1 点,如此循环,直至所有分段计算完毕,则输出序列y(n)为最终计算结果。 图1.2 重叠相加法的分段示意图 图1.3 重叠相加法算法示意图 1.3重叠相加法圆周卷积 在实际应用中利用FFT来计算两个序列的圆周卷积从而实现计算其线性卷积,但是常遇到的问题是参加卷积的两个序列的长度相差较大,这样长度小的序列就需要补很多的零点,这样就需要较大的存储量,运算时间也会变长。所以常用到的解决方法有两种,其中一种就是重叠相加法。 h(n)长度为N,x(n)长度为无限长, x(n)取M点,且与N尽量接近 x(n) x(n)与h(n)的卷积为 图1.4 重叠相加法的卷积示意图 重叠相加法的步骤如下 (1)将h(n)补零延长到L =M+ N -1,并计算长为L的FFT,得到 H(k)。 (2)分别将xk(n)
显示全部
相似文档