重叠相加法实现卷积.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
0 - 设计任务 计算1个给定序列与输入序列的卷积。 功能:对给定的数据进行卷积运算,要求分段卷积由循环卷积实现。要求设计有数据导入界面,各种参数从软件界面可以输入,其中给定序列可以由界面输入,对运算前后的数据绘制曲线。 要求: 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数功能,控 制参数的输入方法; 设计线性卷积的实现方案; 编写两序列作循环卷积的程序; 通过直接做线性卷积来检验最后结果。 设计步骤: 用结构化设计方法。一个程序划分成若干模块,每一个模块的函数功能要划分好,总体设计应画出流程图; 输入输出界面要友好; 源程序书写要规范,加必要的注释; 要提供通过直接卷积进行检验的结果; 程序一定要要能运行起来。 一、原理 1、算法产生背景 DFT 是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的。DFT 具备明确且合理的物理含义,适合应用于数字系统,同时可以方便地由计算机进行运算。 对于线性非移变离散系统,可由线性卷积表示时域输入输出关系,即 y(n)=x(n)*h(n) ? 通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT 的一个重要应用。 2、算法基本思想 重叠相加法是将待过滤的信号分割成长为 N 的若干段,,每一段都可以和有限时宽单位取样回应作卷积,再将过滤后的各段重叠相加。 在实际应用中利用FFT来计算两个序列的圆周卷积从而实现计算其线性卷积,但是常遇到的问题是参加卷积的两个序列的长度相差较大,这样长度小的序列就需要补很多的零点,这样就需要大的存储量,运算时间也会变长。所以常用重叠相加法来解决。 如以下情况: h(n)长度为N,x(n)长度为无限长 x(n)取M点,且与N尽量接近 可采用如下方法来解决 x(n) x(n)与h(n)的卷积为 重叠相加法的卷积示意图 重叠相加法的步骤如下 (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、程序设计思路 函数juanji(x1,x2,L)设计 x1(n)进行N点快速傅里叶变换得X1k x2(n)进行N点快速傅里叶变换得X2k 进行频域相乘Yk=X1k*X2k 对Yk进行反变换得到时域卷积结果y(n) 函数chongdie(x,h,N)设计 (1)首先取圆周卷积的周期L(即进行L点的快速傅里叶变换) (2)计算每一分段的大小N (3)填充序列使得循环中对序列的索引不会超出范围 (4)计算分段数K (5)对序列进行分段调用juanji()函数计算圆周卷积 (6)各段重叠相加 (7)取出实际的输出序列 程序流程图 开始对x1(n)进行FFT运算 开始 对x1(n)进行FFT运算 对x(2)进行FFT运算 频域相乘 Yk=X1k*X2k 对Yk进行反变换得到时域结果y(n) 结束 开始 取圆周卷积的周期L 计算每一分段的大小N 将序列按要求填充 计算分段数K 调用卷积函数 将各段处理的结果重叠相加输出最终结果 结束 重叠相加法 卷积 三、分析与测试 1、循环卷积设计 = 1 \* GB3 ① 程序 M = length(h); if N M %为N选择合适的值保证运算正确 N = M+1; end L = M+N-1; %循环卷积与线性卷积结果相同时需要进行运算的最少点数 Lx = length(x); T = ceil(Lx/N); %确定分段数T t = zeros(1,M-1); %初始化序列t(n) x = [x,zeros(1,(T+1)*N-Lx)]; %不足的分段补零 y = zeros(1,(T+1)*N); %生成输出序列y(n),长度足够长 for i=0:1:T xi=i*N+1; x_seg = x(xi:xi+N-1); %选择低点数计算时的分段x(n) X1k = fft(x_seg,L); %x_seg做L点FFT X2k = fft(h,L);

文档评论(0)

xina171127 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档