- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于重叠相加法圆周卷积的实现.doc
目 录
摘要 Ⅰ
1 理论学习 1
1.1圆周卷积原理 1
1.2重叠相加法 2
1.3重叠相加法圆周卷积 4
1.4线性卷积、圆周卷积、重叠相加法、DFT、FFT之间的联系 5
2 程序设计 6
2.1程序设计思路 6
2.2程序设计流程图 7
2.3 程序代码 7
3程序调试与结果与分析 9
心得体会 11
参考文献 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尽量接近
图1.4 重叠相加法的卷积示意图
重叠相加法的步骤如下
(1)将h(n)补零延长到L =M+ N -1,并计算长为L的FFT,得到 H(k)。
(2)分别将xk(n)补零延长到L =M+ N -1,并计算长为L的FFT,得到 Xk(k)
(3)计算,并求长为L的反变换,即
(4)将yk(n)的重叠部分相加,最后得到结果为
1.4线性卷积、圆周卷积、重叠相加法、DFT、FFT之间的联系
由时域与频域的关系可知,两序列和在时域下进行线性卷积的结果等于这两个序列在频域下相乘后进行反变换回时域的结果。圆周卷积在一定条件下(LM+N-1)与线性卷积得到的结果相同,而圆周卷积可在频域下利用DFT求得,从而可采用DFT的快速算法FFT来计算,这样就可以利用FFT来计算线性卷积,大大提高运算效率。而在利用FFT来计算圆周卷积的过程中当两序列的长度相差较大时采用重叠相加法来进行计算可有效提高计算的效率,减小存储空间的消耗。
2 程序设计
2.1程序设计思路
函数conv (x1,x2,L)设计
x1(n)进行N点快速傅里叶变换得X1(k)
x2(n)进行N点快速傅里叶变换得X2(k)
进行频域相乘Y(k)=X1(k)*X2k
对Y(k)进行反变换得到时域卷积结果y(n)
函数overlap_add(x,h,N)设计
方案1:
(1)首先取长序列x(n)进行分段的长度N,以使其分段后的长度与较短的相近
(2)确定圆周卷积的周期L
(3)填充序列使得循环中对序列的索引不会超出范围
(4)确定分段数K
(5)对序列进行分段调用conv ()函数计算圆周卷积
(6)各段重叠相加
(7)取出实际的输出序列
方案2:
(1)首先取圆周卷积的周期L(即进行L点的快速傅里叶变换)
(2)计算每一分段的大小N
(3)填充序列使得循环中对序列的索引不会超出范围
(4)计算分段数K
(5)对序列进行分段调用co
文档评论(0)