基于重叠相加法圆周卷积的实现
DSP课设设计基于重叠相加法圆周卷积的实现
题目:基于重叠相加法圆周卷积的实现初始条件:具备数字信号处理的理论知识;具备Matlab编程能力;分析重叠相加法的圆周卷积的原理;提供编程所需要的计算机一台要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、独立编写程序实现基于重叠相加法的圆周卷积2、用Matlab验证程序结果,并分析重叠相加法的圆周卷积的原理3、完成符合学校要求的设计说明书时间安排:一周,其中3天程序设计,2天程序调试指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (I)1 软件基础 (1)1.1 MA TLAB介绍 (1)1.2 MA TLAB的应用 (2)2 理论基础 (3)2.1 圆周卷积原理 (3)2.2重叠相加法 (4)3 程序设计 (6)3.1 程序设计思路 (6)3.2程序设计流程图 (7)3.3方案比较 (8)4 程序代码 (9)5 程序运行结果与分析 (11)心得体会 (12)参考文献 (13)摘要MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks 公司出品的商业数学软件,主要用于算法开发、数据可视化、数据分析以及数值计算等领域。
本次课程设计将通过MATLAB软件进行重叠相加法圆周卷积的设计,并对其具体过程进行分析。
关键词:MATLAB 重叠相加法圆周卷积1 软件基础1.1 MATLAB介绍MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
Matlab和Mathematica、Maple并称为三大数学软件。
重叠相加法和重叠保留法的原理与实现
重叠相加法与重叠保存法的原理实现侯凯(吉林大学 通信工程学院 吉林 长春 130012)0概述线性卷积是求离散系统响应的主要方法之一,许多重要应用都建立在这一理论基础上,如卷积滤波等。
用圆周卷积计算线性卷积的方法归纳如下:将长为N 2的序列x(n)延长到L,补L -N 2个零,将长为N 1的序列h(n)延长到L,补L -N 1个零。
如果L ≥N1+N2-1,则圆周卷积与线性卷积相等,此时,可有FFT 计算线性卷积,方法如下:a.计算X(k)=FFT[x(n)]b.求H(k)=FFT[h(n)]c.求Y(k)=H(k)Y(k) k=0~L -1d.求y(n)=IFFT[Y(k)] n=0~L -1可见,只要进行二次FFT,一次IFFT 就可完成线性卷积计算。
上述结论适用于x(n)、h(n)两序列长度比较接近或相等的情况,如果x(n)、h(n)长度相差较多。
例如,h(n)为某滤波器的单位脉冲响应,长度有限,用来处理一个很长的输入信号x(n),或者处理一个连续不断的信号,按上述方法,h(n)要补许多零再进行计算,计算量有很大的浪费,或者根本不能实现。
为了保持快速卷积法的优越性,可将x(n)分为许多段后处理,每小段的长与h(n)接近,其处理方法有两种:重叠相加法和重叠保留法。
1重叠相加法——由分段卷积的各段相加构成总的卷积输出假定x i (n)表示图中第i 段x(n)序列如下图:22()(1)1()0i x n iN n i N x n ≤≤+-⎧=⎨⎩则输入序列可表为:()()i i x n x n ∞=-∞=∑图1 长序列分段滤波于是输出可分解为: ()()*()()*()()i i i i i y n x n h n x n h n y n ∞∞=-∞=-∞===∑∑其中 ()()*()i i y n x n h n =由此表明,只要将x(n)的每一段分别与h(n)卷积,然后再将这些卷积结果相加起来就可得到输出序列,这样,每一段的卷积都可用上面讨论的快速卷积来计算。
【含源代码】北邮dsp-MATLAB试验一重叠相加和重叠保留
Dsp-matlab实验实验一:重叠相加法和重叠保留法的实现设计报告课题名称:学生姓名:级:班班内序号:学号:2015/06/15 日期:目录一、实验原理·········································二、Matlab源代码·································运行结果Matlab三、····························结果分析Matlab四、····································五、遇到的难题与解决方法····························参考文献·························································一、实验原理1、算法来源DFT 是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。
重叠相加法实现卷积
设计任务计算1个给定序列与输入序列的卷积。
功能:对给定的数据进行卷积运算,要求分段卷积由循环卷积实现。
要求设计有数据导入界面,各种参数从软件界面可以输入,其中给定序列可以由界面输入,对运算前后的数据绘制曲线。
要求:1)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数功能,控制参数的输入方法;2)设计线性卷积的实现方案;3)编写两序列作循环卷积的程序;4)通过直接做线性卷积来检验最后结果。
设计步骤:1)用结构化设计方法。
一个程序划分成若干模块,每一个模块的函数功能要划分好,总体设计应画出流程图;2)输入输出界面要友好;3)源程序书写要规,加必要的注释;4)要提供通过直接卷积进行检验的结果;5)程序一定要要能运行起来。
一、原理1、算法产生背景DFT 是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。
在形式上,变换两端(时域和频域上)的序列是有限长的。
DFT 具备明确且合理的物理含义,适合应用于数字系统,同时可以方便地由计算机进行运算。
对于线性非移变离散系统,可由线性卷积表示时域输入输出关系,即y(n)=x(n)*h(n)通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。
因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT 的一个重要应用。
2、算法基本思想重叠相加法是将待过滤的信号分割成长为 N 的若干段,,每一段都可以和有限时宽单位取样回应作卷积,再将过滤后的各段重叠相加。
在实际应用中利用FFT来计算两个序列的圆周卷积从而实现计算其线性卷积,但是常遇到的问题是参加卷积的两个序列的长度相差较大,这样长度小的序列就需要补很多的零点,这样就需要大的存储量,运算时间也会变长。
所以常用重叠相加法来解决。
如以下情况:h(n)长度为N,x(n)长度为无限长x(n)取M点,且与N尽量接近可采用如下方法来解决重叠相加法的卷积示意图∑∞-∞==k kn x n x )()()()()(kM n R n x n x M k -= x(n)与h(n)的卷积为)(*)()(*)()(n x n h n h n x n y k k ∑∞-∞===)()](*)([n y n h n x k k kk ∑∑∞-∞=∞-∞===重叠相加法的步骤如下(1)将h(n)补零延长到L =M+ N -1,并计算长为L 的FFT ,得到 H(k)。
北邮《数字信号处理》Matlab实验——实现重叠相加和重叠保留算法完成线性卷积的分段计算.docx
实验题目1:线性卷积的分段计算实验目的:实现重叠相加和重叠保留算法,完成线性卷枳的分段计算(可任意指定x(n)及h(n))o试验内容:1、对算法的概括性说明重叠相加法是将待过滤的信号分割成长为N的若干段,每一段都可以和冇限时宽单位取样响应作卷积,再将过滤后的各段觅叠相加。
建立缓存序列,每次输入N点序列,通过计算x(n)和h(n)的循坏卷枳实现线性卷积运算,将缓存的M-1点序列和卷积结果相加,并输出前N点作为计算结果,同时缓存后点,如此循环,直至所有分段计算完毕,则输在这种情况下,将序列y(n)分为长N的若干段,每个输入段和前一段仃个巫叠点。
此时只盅要将发生重叠的前个点舍去,保留重叠的部分并输出,则可获得序列y(n)o2、流程图及源代码function [ y ] = circular_conv( xl f x2# L )%利用循环卷积计算线性卷积%循环卷积采用频域计算方法,已FFT代薛DFT,降低运篦戢Xlk = fft(xl#L);龟xl 做L点FFTX2k = fft(x2/L);电xl 做L点FFTYk ■ Xlk.*X2k; *频域相乘y = ifft(Yk); %FFT反变换得循环卷积结果endfunction [ y ] = overlap_add( x, h f N )令堪叠相加法实现咎核心为将高点数DFT转化为低点数DFT. R用循环卷积计算线性卷积M = length(h); *获得人5)的长度if N < M &为N选择介适的值保证运算正确N = M+1;endL = M+N-1;电循环卷枳与线性卷枳结果相同时需耍进行运算的赠少点数Lx = length(x);乌获得x(n)的长度T = ceil(Lx/N);乌确定分段数Tt ■ zerosd/M-l);靱初始化序列t(n)x = [x.zerosd, (T+1)*N-Lx) ]; %不足的分段补零y = zerosd, (T+1)*N); $生成输出序列y(n),长度足勢长for i = 0:1:Txi = i*N+l;x_seg = x(xi:xi+N-l);卡选择低点数计算时的分段x(n)y_seg = circular_conv(x_seg, h, L);乌调用循环卷积计算线性卷积y_seg(l:M-l) = y_seg(1:M-l) +t (1:M-l);%完成重叠相加■ y_seg(N+l:L); *重新对t(n)赋ff[为保留的后点y(xi :xi+N-l) = y_seg( 1 :N);为II接输出前N 个点endy=y(l:Lx+M-l); *収岀協终的输出序列endfunction [ y ] = overlap_save( x, h# N )%重叠保留法实现駢亥心为将高点数DFT转化为低点数DFT. II用循环卷积计算线性卷枳Lx = length(x);労获得x(n)的长度M = length(h); *获得h(n)的长度if N < M先为N选择合适的值保证运算正确N - M+1;endL = N+M-1; *为降低点数,取M+N-1点循环卷积即可t = zerosfl/M-l); *初始化序列t(n)T - ceil(Lx/N);乌确定分段数x = [x r zeros(l f (T+1)*N-Lx)];电为不足的分段补牢y = zerosfl, (T+l)*N);for i = 0:1:Txi = i*N4-l;X_seg = (t r x(xi:xi+N-l)];舎确定每个低点数卷积的分段x(n)t = x_seg(N+l:N+M-l);勒为t(n)重新赋值为后M-l个点的值y_seg = circular_conv(x_seg,h,L); *循环卷积计算线性卷积y(xi:xi+N-l) ■ y_seg(M:N+M-l) ;%^[接取出后N个点作为一次计算的输出endy=y(l:Lx+M-l); *収出实际的输出序end3、实验结果输入(参考教材例3.4、3.5):n - 0:9;xn = n+1;hn = d,0,-l];N = 6;yl = convfhn/ xn)y2 = overlap_add(xn, hn, N)y3 = overlap_save(xn r hn r N)输出: yi ■y2 =2.0000 2.0000 Columns 11 through 12-9.0000 -10.00002.0000 2.0000Columns 11 through 12-9.0000 -10.0000 町见,用重叠相加法和重叠保留发分别计算的卷枳结果与直接利用线性卷枳计算的结果 一致。
重叠相加法
重叠相加法
1、重叠相加法介绍
重叠相加法(Overlapping summation law)是一种数学统计技术,它通过计算两个
数据序列中多次重叠的组合,来得到一个新的数据序列。
这是一种动态的技术,可以用于解决跨越时间的数据统计问题。
2、重叠相加法运用实例
重叠相加法可以用于多种数学统计任务,包括曲线拟合、贝叶斯统计分析、均值滤波和样本回归Method。
例如,在科学研究中,研究人员可以通过重叠相加法对一
系列实验数据进行多轮拟合,从而推断出一定规律或模式。
在工业生产中,也可以利用重叠相加法对生产数据进行分析,以便找出一系列可行的工艺改进方案,从而提高产品的质量和效率。
3、重叠相加法的优点
重叠相加法的优点在于它可以更有效地对跨越时间的数据、按照一定规律变化的数据进行多重曲线拟合,从而更容易形成一定的模式或推论。
而且它的运算量小,
计算量也比其他技术少,即使在复杂的数据统计过程中,它也能够提供良好的结果表现。
4、重叠相加法的缺点
重叠相加法的缺点也是很明显的,它无法直接处理实际数据中复杂的相互影响因素,也没有办法有效地把握实际数据的不确定性。
此外,重叠相加法局限于线性模型,只能拟合数据的简单线性关系,如果目标数据分布更加复杂,它就无能为力了。
用DFT(FFT)对连续信号进行频谱分析
电子信息工程系实验报告课程名称:数字信号处理Array实验项目名称:用DFT(FFT)对连续信号进行频谱分析实验时间:班级:通信姓名: xxp 学号:一、实验目的:1.掌握用DFT(FFT)对模拟信号进行谱分析的方法,理解可能出现的分析误差及其原因,以便在实际中正确应用FFT。
2.熟悉应用FFT实现两个序列的线性卷积的方法。
二、实验原理:1.用DFT(FFT)对连续信号进行频谱分析用DFT(FFT)对模拟信号做谱分析是一种近似的谱分析。
首先一般的模拟信号(周期信号除外)的频谱是连续谱,而用FFT做谱分析得到的是数字谱,因此应该取FFT的点数多一些,用它的包络作为模拟信号的近似谱。
另外,如果模拟信号不是严格的带限信号,会因为频谱混叠现象引起谱分析的误差,这种情况下可以预先将模拟信号进行预滤,或者尽量将采样频率取高一些。
最后要注意一般的模拟信号是无限长的,分析时要截断,截断的长度与对模拟信号进行频谱分析的分辨率有关。
如果要进行谱分析的模拟信号是周期信号,最好选择观测时间是信号周期的整数倍,如果不知道信号的周期,要尽量选择观测时间长一些,以减少截断效应的影响。
在运用DFT(FFT)对模拟信号进行谱分析的过程中主要可能产生以下三种误差:(1) 混叠现象对模拟信号进行谱分析时首先要对其采样,当采样速率不满足Nyquist定理时,就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原模拟信号的频谱。
避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解,在一般情况下,为了保证高于折叠频率的分量不会出现,在采样前,先用低通模拟滤波器对信号进行滤波。
(2) 截断效应实际中我们往往用截短的序列来近似很长的甚至是无限长的序列,这样可以使用较短的DFT来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数,也相当于在频域将信号的频谱和矩形窗函数的频谱卷积,所得的频谱是原序列频谱的扩展。
数字信号处理判断题
判断题1、 信号可定义为传载信息的函数2、模拟信号就是时间连续的信号3、连续时间信号就是时间连续的信号4、离散时间信号就是时间离散的信号5、数字信号就是时间幅度都是离散的信号6、系统就是反映信号处理因果关系的设备或运算7、连续时间系统就是输入输出都是连续时间信号的系统8、数字信号处理精度高9、数字信号处理不可时分复用10、数字信号处理可靠性强,但灵活性不大1、√2、×3、√4、√5、×6、√7、√8、√9、× 10、×1、理想取样可以看成实际取样的科学的本质的抽象2、连续时间的取样造成频谱的周期重复3、连续时间信号的取样可能发生频谱混叠4、离散时间信号可用序列表示5、两序列相乘就是对应序列值相乘6、所有正弦序列都是周期的7、所有复指数序列都是周期的8、当h(n)为因果序列时,系统一定是因果的9、当h(n)绝对可和时,系统一定是稳定的 10、)(1)(n u n n h =,则系统是稳定的 11、)(2)(n u n h n -=,系统是非因果的不稳定系统 12、2)()(+=n x n y ,系统是线性的 13、)()(n x a n y n =,系统是时变的14、离散时间线性非时变系统可用常系数线性差分方程描述15、系统频率响应是指系统对不同频率的正弦序列的不同传输能力16、系统频率响应是连续的非周期的17、系统频率响应是周期的,周期为2π18、任何序列的傅里叶变换都是存在的19、实序列的傅里叶变换是共轭对称的20、Z 变换的收敛域可以是方形区域21、Z 变换的收敛域是以极点来限定边界的22、双边序列的Z 变换的收敛域为环域23、)(n ∂的收敛域为整个Z 平面24、傅里叶变换就是单位圆上的Z 变换25、系统函数收敛域包括单位圆,则系统稳定26、系统函数的收敛域在环内,则系统是因果的27、极点、零点都在单位圆内,系统是最小相位系统28、极点在单位圆内,零点有在单位圆内,也有在单位圆外,则系统是最大相位系统29、极点在单位圆内,零点有在单位圆内,也有在单位圆外,则系统是非最小相位系统30、非最小相位系统可以看成最小相位系统和全通函数相乘1、√2、√3、√4、√5、√6、×7、×8、√9、√ 10、×11、× 12、× 13、√ 14、√ 15、× 16、× 17、√ 18、× 19、√ 20、×21、√ 22、√ 23、√ 24、√ 25、√ 26、× 27、√ 28、× 29、√ 30、√1、离散傅里叶变换在一个域里边是周期的,则另一个域是连续的2、离散傅里叶变换在一个域里边是非周期的,则另一个域是离散的3、离散傅里叶变换一个域里边周期的倒数是另一个域的周期4、DFT 是DFS 取主值5、DFT 不隐含周期性6、DFT 不是连续傅里叶变换的近似7、DFT 是X(z)在单位圆上的等间隔取样8、DFT 的综合就是X(z)9、DFT 和IDFT 可用一套程序计算10、补零增长可使谱线变密11、x(n)反转,X(k)也反转。
重叠相加法和重叠保留法的原理与实现
重叠相加法与重叠保存法的原理实现侯凯(吉林大学 通信工程学院 吉林 长春 130012)0概述线性卷积是求离散系统响应的主要方法之一,许多重要应用都建立在这一理论基础上,如卷积滤波等。
用圆周卷积计算线性卷积的方法归纳如下:将长为N 2的序列x(n)延长到L,补L -N 2个零,将长为N 1的序列h(n)延长到L,补L -N 1个零。
如果L ≥N1+N2-1,则圆周卷积与线性卷积相等,此时,可有FFT 计算线性卷积,方法如下:a.计算X(k)=FFT[x(n)]b.求H(k)=FFT[h(n)]c.求Y(k)=H(k)Y(k) k=0~L -1d.求y(n)=IFFT[Y(k)] n=0~L -1可见,只要进行二次FFT,一次IFFT 就可完成线性卷积计算。
上述结论适用于x(n)、h(n)两序列长度比较接近或相等的情况,如果x(n)、h(n)长度相差较多。
例如,h(n)为某滤波器的单位脉冲响应,长度有限,用来处理一个很长的输入信号x(n),或者处理一个连续不断的信号,按上述方法,h(n)要补许多零再进行计算,计算量有很大的浪费,或者根本不能实现。
为了保持快速卷积法的优越性,可将x(n)分为许多段后处理,每小段的长与h(n)接近,其处理方法有两种:重叠相加法和重叠保留法。
1重叠相加法——由分段卷积的各段相加构成总的卷积输出假定x i (n)表示图中第i 段x(n)序列如下图:22()(1)1()0i x n iN n i N x n ≤≤+-⎧=⎨⎩则输入序列可表为:()()i i x n x n ∞=-∞=∑图1 长序列分段滤波于是输出可分解为: ()()*()()*()()i i i i i y n x n h n x n h n y n ∞∞=-∞=-∞===∑∑其中 ()()*()i i y n x n h n =由此表明,只要将x(n)的每一段分别与h(n)卷积,然后再将这些卷积结果相加起来就可得到输出序列,这样,每一段的卷积都可用上面讨论的快速卷积来计算。
通过重叠相加法实现卷积
数字信号处理课程设计题目:通过重叠相加法实现卷积院系:自动化与信息工程学院专业:通信工程班级:通信092学号:3090432051姓名:侯鹏指导教师:吴鹏飞2012年6月23日-2012年6月30日设计任务通过重叠相加法实现卷积(C语言或MATLAB实现)。
计算一个给定序列与输入序列的卷积。
功能对给定的数据进行卷积计算,要求分算卷积由循环卷积实现要求设计有数据导入界面,各种参数可以由软件界面输入,其中给定序列可以由界面输入,对运算前后的数据绘制曲线。
设计步骤:1)初步完成总体设计,搭好框架,确定人机对话界面,确定函数功能,控制参数的输入方法;2)设计线性卷积的实现方案;3)编写两序列做循环卷积的程序;4)通过直接作线性卷积来检验最后结果;设计要求:1)用结构化设计方法。
一个程序划分成若干模块,每一个模块的函数功能要划分好,总体设计要画出流程图;2)输入输出界面要友好;3)源程序书写要规范,加必要的注释;4)要提供直接通过卷积进行检验的结果;5)程序一定要能运行起来。
课程设计的最后结果是提交一份实验报告,内容包括:1) 程序的设计思想,包括功能描述,函数接口的确定; 2) 流程图;3) 程序源代码(需打印); 4) 测试方法和结果; 5) 小结。
一、原理<一>设计思想:运用分段处理方法中的重叠相加法计算两个序列的卷积运算。
设一个给定序列是长度为n1的A,另一个导入序列是长度为n2的B,其中B 序列 是相对A 序列比较长的,所以可以把B 分为和A 一样长的若干段段,即B 分后每一小段长度为n1。
根据书上的公式:)()(*)()(*)()(*)()(0n y n x n A n B n A n B n A n y k k k k k k ∑∑∑∞-∞=∞=====可知将B 序列的每一小段与A 序列做现行卷积,然后将所有的n2/n1段的线性卷积结果相加起来就是整个B 序列和A 序列的线性卷积结果,而又在本设计中,B 序列的一小段和A 序列的线性卷积又可由循环卷积来实现,只要让循环卷积的点数121-+≥n n L ,循环卷积的结果就和线性卷积的结果等价,在本实验中取112-⨯=n L ,故A 序列和B 序列的线性卷积可认为是由A 序列和B 的每一小段做112-⨯=n L 点的循环卷积的最终累加和,另外还有两个个问题需要考虑,首先是做循环卷积时要对A 序列和B 序列的那一小段补零做卷积后,最终做累加的时候要考虑重叠的片段,必须将重叠的两段加起来。
数字信号处理期末试卷
数字信号处理模拟试题一一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.在对连续信号均匀采样时,要从离散采样值不失真恢复原信号,则采样角频率Ωs与信号最高截止频率Ωc应满足关系(A )A.Ωs>2ΩcB.Ωs>ΩcC.Ωs<ΩcD.Ωs<2Ωc2.下列系统(其中y(n)为输出序列,x(n)为输入序列)中哪个属于线性系统?( D)A.y(n)=y(n-1)x(n)B.y(n)=x(n)/x(n+1)C.y(n)=x(n)+1D.y(n)=x(n)-x(n-1)3.已知某序列Z变换的收敛域为5>|z|>3,则该序列为(D )A.有限长序列B.右边序列C.左边序列D.双边序列4.实偶序列傅里叶变换是(A )A.实偶序列B.实奇序列C.虚偶序列D.虚奇序列5.已知x(n)=δ(n),其N点的DFT[x(n)]=X(k),则X(N-1)=( B)A.N-1B.1C.0D.-N+16.设两有限长序列的长度分别是M与N,欲通过计算两者的圆周卷积来得到两者的线性卷积,则圆周卷积的点数至少应取(B )A.M+NB.M+N-1C.M+N+1D.2(M+N)7.下面说法中正确的是( C)A.连续非周期信号的频谱为周期连续函数B.连续周期信号的频谱为周期连续函数C.离散非周期信号的频谱为周期连续函数D.离散周期信号的频谱为周期连续函数8.下列各种滤波器的结构中哪种不是IIR滤波器的基本结构?(C )A.直接型B.级联型C.频率抽样型D.并联型9.下列关于FIR滤波器的说法中正确的是(C)A.FIR滤波器容易设计成线性相位特性B.FIR滤波器的脉冲响应长度是无限的C.FIR滤波器的脉冲响应长度是确定的D.对于相同的幅频特性要求,用FIR滤波器实现要比用IIR滤波器实现阶数低10.下列关于冲激响应不变法的说法中错误的是(D)A.数字频率与模拟频率之间呈线性关系B.能将线性相位的模拟滤波器映射为一个线性相位的数字滤波器C.具有频率混叠效应D.可以用于设计低通、高通和带阻滤波器二、判断题(本大题共5小题,每小题2分,共10分)判断下列各题,正确的在题后括号内打“√”,错的打“×”。
《数字信号处理》实验报告
《数字信号处理》实验报告年级:2011级班级:信通4班姓名:朱明贵学号:111100443老师:李娟福州大学2013 年11 月实验一快速傅里叶变换(FFT)及其应用一、实验目的1.在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉MATLAB中的有关函数。
2.熟悉应用FFT对典型信号进行频谱分析的方法。
3.了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。
4.熟悉应用FFT实现两个序列的线性卷积和相关的方法。
二、实验类型演示型三、实验仪器装有MATLAB语言的计算机四、实验原理在各种信号序列中,有限长序列信号处理占有很重要地位,对有限长序列,我们可以使用离散Fouier变换(DFT)。
这一变换不但可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N时,它的DFT定义为:反变换为:有限长序列的DFT是其Z变换在单位圆上的等距采样,或者说是序列Fourier变换的等距采样,因此可以用于序列的谱分析。
FFT并不是与DFT不同的另一种变换,而是为了减少DFT运算次数的一种快速算法。
它是对变换式进行一次次分解,使其成为若干小点数的组合,从而减少运算量。
常用的FFT 是以2为基数的,其长度。
它的效率高,程序简单,使用非常方便,当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT,可以用末位补零的方法,使其长度延长至2的整数次方。
(一)在运用DFT进行频谱分析的过程中可能的产生三种误差1.混叠序列的频谱是被采样信号频谱的周期延拓,当采样速率不满足Nyquist定理时,就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原信号的频谱。
避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解,在一般情况下,为了保证高于折叠频率的分量不会出现,在采样前,先用低通模拟滤波器对信号进行滤波。
计算二维数字卷积的重叠相加法研究
一
红l , F( 2=D T [(, ) 0 k L —1 0 1 L —1 k) F 2fnm] 1 , 2 , l ,
( 1=D T [(, ) 0 k L —1 0 I L —1 ) F 2fnm ] 1 , 2 . , 2 ,
D
F
T
G nm :,( 一 0 ( ) ( 礼, m ) . , ( m , , 札 m— 0 Ⅳ Ⅳ 札 ) )M M ,
l 1 0 n N 一1 0 m M 一1 , , ,
0 其它. ,
一 ∑一
^
其 中
礼
一
m
=
Ⅳ ( m ={ ,n ) 1 M ,
, J
一
∑一
佗 ,v =
一
m
m
D T ( ) 3J ne J m D T () F 2G :( 哿ko— 薏lo F 2f -
.
定理 2 设有限维数字 阵列 f( , 和 f ( , ,维数分别为 N1 ln m) 2n m) ×M1 N2XM2 , ,取 L 1 ma ( , ) L ma ( , ) x N1Ⅳ2, h 2 x M1M2,两数字阵列 的DF 分别 为 T2
6 6 5
工
程
数
学
学
报
第2卷 9
定义 1 设有限维数字 阵列 fnm) (, ,维数为 N ×M ,其 中L1 N, 22M ,则 fnm) L (, 的 二维离散傅立 叶变换 ( F ) kf定义为 D T2F(, ) F(, k1 )
=
定义 2 设有 限维数字阵列 t 礼 m) 厂 , ,维数为 N ×M ,则其循环移位阵列为 (
重叠保留法教学探索与案例设计
重叠保留法教学探索与案例设计作者:黄荣宗蓝丽娟陈志文蒋朝辉许可来源:《高教学刊》2024年第12期基金项目:2023年国家自然科学基金面上项目“微尺度功能表面上气液相变的介微观建模与直接模拟研究”(52376086);2021国家自然科学基金青年项目“非一致标准具效应下微量气体原位检测方法研究”(62103448);2022年湖南省科技创新计划项目“青年科技人才项目”(2022RC1090)第一作者简介:黄荣宗(1988-),男,汉族,湖北咸宁人,工学博士,特聘副教授。
研究方向为多相流介微观数值方法及应用、固液相变传热与储能等。
*通信作者:蓝丽娟(1987-),女,畲族,福建漳州人,工学博士,讲师。
研究方向为工业自动化检测、工业过程碳排放智能感知等。
DOI:10.19980/23-1593/G4.2024.12.031摘要:分段卷积是DFT/FFT实现线性卷积的重要途径,主要有重叠保留法和重叠相加法,教学过程中发现,学生对于重叠保留法的学习往往忽略对算法原理的真正理解,导致计算结果不准确。
该文基于圆周卷积与线性卷积的数学关系,推导重叠保留法计算误差出现的原因,得到重叠保留法的计算步骤;结合计算流程和具体实例,分析造成计算数据缺失的原因,并创新提出解决方法;随后分析基2-FFT算法下补零处理对重叠保留法的影响,得出采用重叠保留法和FFT算法计算线性卷积的优化步骤;最后,以调制光谱分析为例进行教学案例设计,并对重叠保留法给出相应的教学建议。
关键词:分段卷积;重叠保留法;线性卷积;圆周卷积;案例设计中图分类号:G642 文献标志码:A 文章编号:2096-000X(2024)12-0130-04Abstract: Piecewise convolution is an important way for DFT/FFT algorithm to calculate linear convolution. It mainly includes overlapping reservation and overlap-add methods. During the teaching process, students often ignore the principle of the algorithm when learning the overlapping reservation method, resulting in calculation errors. Based on the mathematical relationship between circular convolution and linear convolution, this article deduces the reasons for the calculation error of the overlapping reservation method, and obtains the calculation process of the overlapping reservation method. Combining the calculation process and specific examples, it analyzes the reasons for the missing calculation data, and innovatively proposes the solution. Then, it analyzes the impact of zero-padding processing on the overlapping preservation method under the base 2-FFT algorithm, and optimizes the steps for calculating linear convolution using the overlapping reservation and FFT algorithms. Finally, a teaching case is designed using the modulation spectrum analysis, and corresponding teaching suggestions are given for the overlapping reservation method.Keywords: piecewise convolution; overlapping reservation method; linear convolution; circular convolution; case design線性卷积反映系统对于输入信号的作用结果,即线性卷积当前时刻的输出是当前及其之前时刻系统对输入信号响应的叠加,线性卷积是连接信号与系统的桥梁。
通过重叠相加法实现卷积
数字信号处理课程设计题目:通过重叠相加法实现卷积院系:自动化与信息工程学院专业:通信工程班级:通信092学号:3090432051姓名:侯鹏指导教师:吴鹏飞2012年6月23日-2012年6月30日设计任务通过重叠相加法实现卷积(C语言或MATLAB实现)。
计算一个给定序列与输入序列的卷积。
功能对给定的数据进行卷积计算,要求分算卷积由循环卷积实现要求设计有数据导入界面,各种参数可以由软件界面输入,其中给定序列可以由界面输入,对运算前后的数据绘制曲线。
设计步骤:1)初步完成总体设计,搭好框架,确定人机对话界面,确定函数功能,控制参数的输入方法;2)设计线性卷积的实现方案;3)编写两序列做循环卷积的程序;4)通过直接作线性卷积来检验最后结果;设计要求:1)用结构化设计方法。
一个程序划分成若干模块,每一个模块的函数功能要划分好,总体设计要画出流程图;2)输入输出界面要友好;3)源程序书写要规范,加必要的注释;4)要提供直接通过卷积进行检验的结果;5)程序一定要能运行起来。
课程设计的最后结果是提交一份实验报告,内容包括:1)程序的设计思想,包括功能描述,函数接口的确定;2)流程图;3)程序源代码(需打印);4)测试方法和结果;5)小结。
一、原理<一>设计思想:运用分段处理方法中的重叠相加法计算两个序列的卷积运算。
设一个给定序列是长度为n1的A,另一个导入序列是长度为n2的B,其中B 序列 是相对A 序列比较长的,所以可以把B 分为和A 一样长的若干段段,即B 分后每一小段长度为n1。
根据书上的公式:)()(*)()(*)()(*)()(0n y n x n A n B n A n B n A n y k k k k k k ∑∑∑∞-∞=∞=====可知将B 序列的每一小段与A 序列做现行卷积,然后将所有的n2/n1段的线性卷积结果相加起来就是整个B 序列和A 序列的线性卷积结果,而又在本设计中,B 序列的一小段和A 序列的线性卷积又可由循环卷积来实现,只要让循环卷积的点数121-+≥n n L ,循环卷积的结果就和线性卷积的结果等价,在本实验中取112-⨯=n L ,故A 序列和B 序列的线性卷积可认为是由A 序列和B 的每一小段做112-⨯=n L 点的循环卷积的最终累加和,另外还有两个个问题需要考虑,首先是做循环卷积时要对A 序列和B 序列的那一小段补零做卷积后,最终做累加的时候要考虑重叠的片段,必须将重叠的两段加起来。
数字信号处理期末试卷!
数字信号处理模拟试题一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.在对连续信号均匀采样时,要从离散采样值不失真恢复原信号,则采样角频率Ωs与信号最高截止频率Ωc应满足关系(A )A.Ωs>2ΩcB.Ωs>ΩcC.Ωs<ΩcD.Ωs<2Ωc2.下列系统(其中y(n)为输出序列,x(n)为输入序列)中哪个属于线性系统?(D)A.y(n)=y(n-1)x(n)B.y(n)=x(n)/x(n+1)C.y(n)=x(n)+1D.y(n)=x(n)-x(n-1)3.已知某序列Z变换的收敛域为5>|z|>3,则该序列为(D )A.有限长序列B.右边序列C.左边序列D.双边序列4.实偶序列傅里叶变换是(A )A.实偶序列B.实奇序列C.虚偶序列D.虚奇序列5.已知x(n)=δ(n),其N点的DFT[x(n)]=X(k),则X(N-1)=(B)A.N-1B.1C.0D.-N+16.设两有限长序列的长度分别是M与N,欲通过计算两者的圆周卷积来得到两者的线性卷积,则圆周卷积的点数至少应取(B )A.M+NB.M+N-1C.M+N+1D.2(M+N)7.下面说法中正确的是(C)A.连续非周期信号的频谱为周期连续函数B.连续周期信号的频谱为周期连续函数C.离散非周期信号的频谱为周期连续函数D.离散周期信号的频谱为周期连续函数8.下列各种滤波器的结构中哪种不是IIR滤波器的基本结构?(C )A.直接型B.级联型C.频率抽样型D.并联型9.下列关于FIR滤波器的说法中正确的是(C)A.FIR滤波器容易设计成线性相位特性B.FIR滤波器的脉冲响应长度是无限的C.FIR滤波器的脉冲响应长度是确定的D.对于相同的幅频特性要求,用FIR滤波器实现要比用IIR滤波器实现阶数低10.下列关于冲激响应不变法的说法中错误的是(D)A.数字频率与模拟频率之间呈线性关系B.能将线性相位的模拟滤波器映射为一个线性相位的数字滤波器C.具有频率混叠效应D.可以用于设计低通、高通和带阻滤波器二、判断题(本大题共5小题,每小题2分,共10分)判断下列各题,正确的在题后括号内打“√”,错的打“×”。
叠重叠保留和重叠相加法
和大家分享下我今天上午刚刚编完的作业。
用重叠保留法和重叠相加法计算快速卷积,下面直接上代码~重叠保留法clear allclcN=8;%分段的长度,也就是做fft的长度h=[1,3,2,1];%系统冲击响应h(n)for i=0:9 %定义x(n)x(i+1)=5-i;endfor i=10:18x(i+1)=i-15;endLenx=length(x);M=length(h);M1=M-1;%重叠部分的长度L=N-M1;%不重叠部分的长度h=fft(h,N);K=floor((Lenx+M1-1)/L)+1;%分的段数p=(K)*L-Lenx;%最后一段结尾补零数x1=[zeros(1,M1),x,zeros(1,p)];%总的大矩阵Y=zeros(K,N);%保存结果矩阵初始化for k=0:K-1xk=fft(x1(k*L+1:k*L+N));Y(k+1,:)=(ifft(xk.*h));endZ=reshape(Y(:,M:N)',1,[])%将保存结果矩阵转成一个行向量重叠相加法clear allclcN=8;%分段的长度,也就是做fft的长度h=[1,3,2,1];%系统冲击响应h(n)for i=0:9 %定义x(n)x(i+1)=5-i;endfor i=10:18x(i+1)=i-15;endLenx=length(x);M=length(h);M1=M-1;%重叠部分的长度L=N-M1;%不重叠部分的长度h=fft(h,N);K=ceil(Lenx/L);%分的段数for i=Lenx:K*L-1%将x(n)补成长度为K*L的序列x(i+1)=0;endY=zeros(K,N);%保存结果矩阵初始化YY=zeros(1,(K-1)*L+N);%最终结果矩阵初始化for k=0:K-1xk=[x(k*L+1:k*L+L),zeros(1,M1)];Y(k+1,:)=(ifft(fft(xk).*h));YY(k*L+1:k*L+N)=YY(k*L+1:k*L+N)+Y(k+1,:) end。
圆周卷积算法的改进与实现
圆周卷积算法的改进与实现李广;苏建元【摘要】离散卷积是数字信号处理课程中的一种最基本的运算.该算法是在圆周卷积的传统算法上进行研究的,以离散线性卷积和圆周卷积为基本理论基础,引入主值序列矩阵概念.对序列进行补零,将得到的序列依次循环右移,构建主值序列矩阵求解圆周卷积.通过实际算例验证了该算法极大地简化了圆周卷积的运算;在Matlab中,新算法所得的仿真结果与FFT和IFFT实现的仿真结果一致,进一步验证了该方法的有效性和优越性.【期刊名称】《电子设计工程》【年(卷),期】2015(023)007【总页数】3页(P90-92)【关键词】数字信号处理;Matlab;离散卷积;FFT;IFFT【作者】李广;苏建元【作者单位】河海大学能源与电气学院,江苏南京211100;河海大学能源与电气学院,江苏南京211100【正文语种】中文【中图分类】TN911.72在数字信号处理课程中,线性卷积和圆周卷积是最基本的运算。
文献[1]中的方法在学习、计算中,过程较为繁琐,且浪费时间。
而文献[2]中的算法也有局限,为了简洁、快速、有效的解决问题,提出此改进算法。
1.1 线性卷积的基础理论设两序列为x(n)和h(n),则求解线性卷积的公式[1]定义为:线性卷积的求解过程可分为:翻褶、移位、相乘和相加等4个步骤[1]:1)翻褶:先在变量坐标m上作出x(m)和h(m),将h(m)以m=0的垂直轴为对称轴翻褶成h(-m)。
2)移位:将h(-m)移位n,即得到h(n-m)。
当n为正整数时,右移n位;当n为负整数时,左移n位。
3)相乘:再将h(n-m)和x(m)的相同m值得对应点值相乘。
4)相加:把以上所有对应点的乘积叠加起来,即得有y (n)值。
1.2 圆周卷积的基础理论设x1(n)是N1点的有限长序列(0≤n≤N1-1),x2(n)是N2点的有限长序列(0≤n≤N2-1)。
设y(n)=x1(n)⊗x2(n)是两个序列的L点圆周卷积,先在x1(n)中补上L-N1个零值点,在x2(n)中补上L-N2个零值点,则圆周卷积的公式定义[1]为:其中,若L≥N1+N2-1,则L点圆周卷积能代表线性卷积。
《数字信号处理》期末试题库
一、单项选择题(10小题,每小题2分,共20分)在每小题列出的三个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1. 下面说法中正确的是。
A.连续非周期信号的频谱为周期连续函数B.连续周期信号的频谱为周期连续函数C。
离散非周期信号的频谱为周期连续函数D。
离散周期信号的频谱为周期连续函数2. 要处理一个连续时间信号,对其进行采样的频率为3kHz,要不失真的恢复该连续信号,则该连续信号的最高频率可能是为。
A.6kHz B.1.5kHz C.3kHz D.2kHz3。
已知某序列Z变换的收敛域为5>|z|>3,则该序列为。
A.有限长序列B。
右边序列 C.左边序列D。
双边序列4。
下列对离散傅里叶变换(DFT)的性质论述中错误的是.A。
DFT是一种线性变换 B. DFT可以看作是序列z变换在单位圆上的抽样C. DFT具有隐含周期性D.利用DFT可以对连续信号频谱进行精确分析5。
下列关于因果稳定系统说法错误的是.A.极点可以在单位圆外B.系统函数的z变换收敛区间包括单位圆C.因果稳定系统的单位抽样响应为因果序列D.系统函数的z变换收敛区间包括z=∞6. 设系统的单位抽样响应为h(n),则系统因果的充要条件为.A.当n>0时,h(n)=0 B.当n〉0时,h(n)≠0C.当n<0时,h(n)=0 D.当n〈0时,h(n)≠07。
要从抽样信号不失真恢复原连续信号,应满足下列条件的哪几条?答。
(I)原信号为带限II)抽样频率大于两倍信号谱的最高频率(III)抽样信号通过理想低通滤波器A.I、IIB.II、III C。
I、III D。
I、II、III8。
在窗函数设计法,当选择矩形窗时,最大相对肩峰值为8。
95%,N增加时,2π/N减小,起伏振荡变密,最大相对肩峰值则总是8。
95%,这种现象称为。
A.吉布斯效应B.栅栏效应C.泄漏效应D.奈奎斯特效应9。
下面关于IIR滤波器设计说法正确的是。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计任务书学生姓名:专业班级:指导教师:工作单位:信息工程学院题目:基于重叠相加法圆周卷积的实现初始条件:具备数字信号处理的理论知识;具备Matlab编程能力;分析重叠相加法的圆周卷积的原理;提供编程所需要的计算机一台要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、独立编写程序实现基于重叠相加法的圆周卷积2、用Matlab验证程序结果,并分析重叠相加法的圆周卷积的原理3、完成符合学校要求的设计说明书时间安排:一周,其中3天程序设计,2天程序调试指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (2)1 概述 (3)2 理论分析 (4)2.1圆周卷积原理 (4)2.2重叠相加法 (5)2.3重叠相加法圆周卷积 (6)2.4线性卷积、圆周卷积、重叠相加法、DFT、FFT之间的联系 (8)3 程序设计 (9)3.1程序设计思路 (9)3.2程序设计流程图 (10)3.3 程序代码 (10)4结果分析 (12)4.1线性卷积结果 (12)4.2重叠相加法圆周卷积结果 (13)5心得体会 (14)参考文献 (15)摘要MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,主要用于算法开发、数据可视化、数据分析以及数值计算等领域。
本次课程设计将通过MATLAB软件进行重叠相加法圆周卷积的设计,并对其具体过程进行分析。
关键词:MATLAB 重叠相加法圆周卷积1概述MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++ ,JA V A的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以使用。
MATLAB具有以下特点:1.高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;2.具有完备的图形处理功能,实现计算结果和编程的可视化;3.友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;4.功能丰富的应用工具箱,为用户提供了大量方便实用的处理工具。
2 理论分析2.1圆周卷积原理对两个N 点序列)(1n x 和)(2n x ,除了可以做线性卷积外,还有一种很重要的卷积运算,就是圆周卷积。
令则圆周卷积结果长度不变, 为N.由上式可以得出圆周卷积与周期卷积的关系,就是有限长序列圆周卷积结果的周期延拓,等于它们周期延拓后的周期卷积。
也就是说,周期卷积的主值序列,是各周期序列主值序列的圆周卷积。
若)(1n x 、)(2n x 分别是长度为N 、M 的序列则)(1n x 与)(2n x 线性卷积至多M+N-1个非零值,如果L<M+N-1则周期延拓时必然会有一部分非零值发生混叠;只有当L>M+N-1时,周期延拓才不会发生混叠。
之所以讨论用圆周卷积来计算线性卷积的条件,是因为圆周卷积可在频域下利用DFT 求得,从而可采用DFT 的快速算法FFT 来计算,这样就可以利用FFT 来计算线性卷积,大大提高运算效率。
⎩⎨⎧-≤≤-≤≤=110)()(1111N n N N n n x n x ⎩⎨⎧-≤≤-≤≤=1010)()(2222N n N N n n x n x ∑∑-=-=-=-=⊗=11212121))(()())(()()()()(N m NN m N m n x m x m n x m x n x n x n y圆周卷积的实现步骤如下图:图2.1 圆周卷积的实现步骤2.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)为最终计算结果。
图2.2 重叠相加法的分段示意图图2.3 重叠相加法算法示意图2.3重叠相加法圆周卷积在实际应用中利用FFT来计算两个序列的圆周卷积从而实现计算其线性卷积,但是常遇到的问题是参加卷积的两个序列的长度相差较大,这样长度小的序列就需要补很多的零点,这样就需要较大的存储量,运算时间也会变长。
所以常用到的解决方法有两种,其中一种就是重叠相加法。
h(n)长度为N ,x(n)长度为无限长, x(n)取M 点,且与N 尽量接近图2.4 重叠相加法的卷积示意图重叠相加法的步骤如下(1)将h(n)补零延长到L =M+ N -1,并计算长为L 的FFT ,得到 H(k)。
(2)分别将x k (n)补零延长到L =M+ N -1,并计算长为L 的FFT ,得到 X k (k) (3)计算)()()(k H k X k Y k k =,并求长为L 的反变换,即)]([)(k Y IFFT n y k k =(4)将y k (n)的重叠部分相加,最后得到结果为∑∞-∞==k kn y n y )()(∑∞-∞==k kn xn x )()()()()(kM n R n x n x M k -=x(n)与h(n)的卷积为)(*)()(*)()(n x n h n h n x n y k k ∑∞-∞===)()](*)([n y n h n xk k kk ∑∑∞-∞=∞-∞===2.4线性卷积、圆周卷积、重叠相加法、DFT 、FFT 之间的联系由时域与频域的关系可知,两序列)(1n x 和)(2n x 在时域下进行线性卷积的结果等于这两个序列在频域下相乘后进行反变换回时域的结果。
圆周卷积在一定条件下(L>M+N-1)与线性卷积得到的结果相同,而圆周卷积可在频域下利用DFT 求得,从而可采用DFT 的快速算法FFT 来计算,这样就可以利用FFT 来计算线性卷积,大大提高运算效率。
而在利用FFT 来计算圆周卷积的过程中当两序列的长度相差较大时采用重叠相加法来进行计算可有效提高计算的效率,减小存储空间的消耗。
3 程序设计3.1程序设计思路线性卷积函数iconv (x1,x2,L)设计(1)x1(n)进行N点快速傅里叶变换得X1(k)(2)x2(n)进行N点快速傅里叶变换得X2(k)(3)进行频域相乘Y(k)=X1(k)*X2k(4)对Y(k)进行反变换得到时域卷积结果y(n)圆周卷积函数oconv(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)计算分段数T(5)对序列进行分段调用conv ()函数计算圆周卷积(6)各段重叠相加(7)取出实际的输出序列结论:方案二比较接近我们平常的思维,使用较为方便,利于程序调试。
3.2程序设计流程图图3.1 程序设计流程图3.3 程序代码function y = iconv( x1,x2,L)% 利用循环卷积计算线性卷积% 循环卷积采用频域计算方法,已FFT代替DFT,降低运算量X1k = fft(x1,L); %x1做L点FFTX2k = fft(x2,L); %x1做L点FFTYk = X1k.*X2k; %频域相乘y = ifft(Yk); %FFT反变换得循环卷积结果function y = oconv(x,h,N)%重叠相加法实现%核心为将高点数DFT转化为低点数DFT,且用循环卷积计算线性卷积M = length(h); %获得h(n)的长度if N <M %为N选择合适的值保证运算正确N = M+1;endL = M+N-1; %循环卷积与线性卷积结果相同时需要进行运算的最少点数Lx = length(x); %获得x(n)的长度T = ceil(Lx/N); %确定分段数Tt = 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:Txi=i*N+1;x_seg = x(xi:xi+N-1); %选择低点数计算时的分段x(n)y_seg =iconv(x_seg,h,L); %调用循环卷积计算线性卷积y_seg(1:M-1) = y_seg(1:M-1)+t(1:M-1);%完成重叠相加t(1:M-1) = y_seg(N+1:L); %重新对t(n)赋值为保留的后M-1点y(xi:xi+N-1) = y_seg(1:N); %直接输出前N个点endy=y(1:Lx+M-1); %取出最终的输出序列4结果分析先输入程序段iconv( x1,x2,L)保存为iconv.m再输入程序段oconv(x,h,N)保存为oconv.m输入序列和周期L4.1 线性卷积结果x1=[1,2,3,4,5,6,7,8,9];x2=[3,2,1];L=14;iconv( x1,x2,L)图4.1 线性卷积结果如图可见,运算结果:3 8 14 20 26 32 38 44 50 26 94.2重叠相加法圆周卷积结果x=[1,2,3,4,5,6,7,8,9];h=[3,2,1];N=4;oconv(x,h,N)图4.2 重叠相加法圆周卷积结果如图可见,运算结果:3 8 14 20 26 32 38 44 50 26 9由程序运行结果与线性卷积结果比较可以知道程序计算结果正确的,程序设计完成。