通过重叠相加法实现卷积
基于重叠保留法的圆周卷积
1.理论知识1.1圆周卷积的定义设)(1n x 和)(2n x 为长度为N 的有限长序列,且[])()(11k X n x DFT =,[])()(22k X n x DFT =,如果()()()k X k X k Y 21=,则()()[]k Y IDFT n y =()()()()n R m n x m x N N N m -=∑-=1102 (1)证明:相当于将)(~),(~21n x n x 作周期卷积和后,再取主值序列。
将)(k y 周期延拓:)(~)(~~21k X k X k Y =)(则有: []()()⎥⎦⎤⎢⎣⎡-=-==∑∑-=-=10211021))(()(~)(~)(~)(~N m N N N m m n x m x m n x m x k Y IDFS n y在主值区间)())((,1011m x m x N m N =-≤≤ ,所以:()()()n R m n x m x n R n y n y N N m N N ⎥⎦⎤⎢⎣⎡-==∑-=1021)()()(~)( 同样可以证明:()())()()(1012n R m n x m x n y N N m N ⎥⎦⎤⎢⎣⎡-=∑-=定义式(1)为序列)(1n x 与)(2n x 的圆周卷积,习惯表示为 ()()()n n x y 21x ⊙n =从以上的证明过程也可以得出圆周卷积与周期卷积之间的关系,即有限长序列圆周卷积结果的周期延拓等于它们周期延拓后的周期卷积。
也就是说,周期卷积的主值序列是各周期序列主值序列的圆周卷积。
1.2圆周卷积的计算圆周卷积的具体步骤为:第一步:在哑元坐标上做)(1m x 与)(2m x ;第二步:把)(2m x 沿着纵坐标翻转,得到)(2m x -; 第三步:对)(2m x -做圆周移位,得()()()n R m n x N N -2;第四步:)(1m x 与()()()n R m n x N N -2对应的相同m 的值进行相乘,并把结果进行相加,得到的对应于自变量n 的一个()n y ;第五步:换另一个n ,重复第三、四步,直到n 取遍[0,N-1]中的所有值,得到完整的()n y 。
北邮《数字信号处理》Matlab实验——实现重叠相加和重叠保留算法完成线性卷积的分段计算
实验目的:
实现重叠相加和重叠保留算法,完成线性卷积的分段计算(可任意指定 x(n)及 h(n)) 。
试验内容:
1、对算法的概括性说明
重叠相加法是将待过滤的信号分割成长为 N 的若干段,每一段都可以和有限时宽单位 取样响应作卷积,再将过滤后的各段重叠相加。建立缓存序列,每次输入 N 点序列,通过 计算 x(n)和 h(n) 的循环卷积实现线性卷积运算,将缓存的 M‐1 点序列和卷积结果相加,并 输出前 N 点作为计算结果,同时缓存后 M‐1 点,如此循环,直至所有分段计算完毕,则输 出序列 y(n)为最终计算结果。
5、总结实验过程中出现的问题以及解决问题的具体措施
1.利用自定义函数解决代码重复使用的问题,避免多次输入同样代码。 2.构造分段补零不会实现,通过上网查资料后获得实现相关功能的代码。
可见, 用重叠相加法和重叠保留发分别计算的卷积结果与直接利用线性卷积计算的结果 一致。算法正确性得以验证。
4、结合教材 3.5.1 节作运算量分析
若有限长因果序列 x(n)和 h(n)的长度分别为 N 和 M,计算其线性卷积 y(n),需 MN 次乘 法运算,(M‐1)(N‐1)次加法运算。如果利用循环卷积方法,按基 2 时域抽选法实现 L 点 FFT 和 IFFT,需
3、实验结果
输入(参考教材例 3.4、3.5) :
n = 0:9; xn = n+1; hn = [1,0,-1]; N = 6;
y1 = conv(hn, xn) y2 = overlap_add(xn, hn, N) y3 = overlap_save(xn, hn, N)
输出:
y1 = 1 y2 = Columns 1 through 10 1.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2 2 2 2 2 2 2 2 2 -9 -10
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并称为三大数学软件。
通过重叠相加法实现卷积
数字信号处理课程设计题目:通过重叠相加法实现卷积院系:自动化与信息工程学院专业:通信工程班级:通信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 序列的那一小段补零做卷积后,最终做累加的时候要考虑重叠的片段,必须将重叠的两段加起来。
北京理工大学数信实验报告
实验1 利用DFT 分析信号频谱一、实验目的1、加深对DFT 原理的理解。
2、应用DFT 分析信号的频谱。
3、深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境计算机、MATLAB 软件环境。
三、实验基础理论1.DFT 与DTFT 的关系:有限长序列的离散时间傅里叶变换(e )j X ω 在频率区间(02)ωπ≤≤ 的N 个等间隔分布的点2(0k N 1)kk N πω=≤≤-上的N 个取样值可以有下式表示:2120(e )|(n)e(k)(0k N 1)N jkn j Nkk NX x X πωπω--====≤≤-∑由上式可知,序列(n)x 的N 点DFT (k)X ,实际上就是(n)x 序列的DTFT 在N 个等间隔频率点2(0k N 1)kk N πω=≤≤-上样本(k)X 。
2.利用DFT 求DTFT方法1:由(k)X 恢复出(e )j X ω的方法如下:由流程知:11(e )(n)e[(k)W]e N j j nkn j nNn n k X x X Nωωω∞∞----=-∞=-∞===∑∑∑继续整理可得到:12()(k)()Ni k kx e X N ωπφω==-∑其中(x)φ为内插函数:sin()2()sin()2N N ωφωω=方法2:实际在MATLAB 计算中,上述插值运算不见得是最好的办法。
由于DFT 是DTFT 的取样值,其相邻两个频率样本点的间距为2N π,所以如果我们增加数据的长度N ,使得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样就可以利用DFT 计算DTFT 。
如果没有更多的数据,可以通过补零来增加数据长度。
3.利用DFT 分析连续信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续信号离散化,这里需要进行两个操作:一是采样,二是截断。
对于连续时间非周期信号(t)a x ,按采样间隔T 进行采样,阶段长度M ,那么:1(j )(t)e(nT)e M j tj nTa a a n X x dt T x -∞-Ω-Ω-∞=Ω==∑⎰对(j )a X Ω 进行N 点频域采样,得到:2120(j )|(nT)e(k)M jkn Na a M kn NTX T x TX ππ--Ω==Ω==∑采用上述方法计算信号(t)a x 的频谱需要注意如下三个问题:(1)频谱混叠;(2)栅栏效应和频谱分辨率; (3)频谱泄露。
利用FFT计算卷积
利用FFT 计算卷积一.线卷积的作用及定义线卷积包括卷积积分和卷积和。
1.线卷积的作用求解线性系统对任意激励信号的零态响应。
2.卷积积分)(*)(d )()()(t h t x t h x t y =-=⎰∞∞-τττ3.卷积和离散系统的时域分析是,已知离散系统的初始状态和输入信号(激励),求离散系统的输出(响应),两种方法:递推解法和离散卷积法。
卷积和:)()()()()(n h n x m n h m x n y m *=-=∑∞-∞= 二.圆周卷积的定义圆周移位:一周期为N 的周期序列, 可视为一主值序列在圆周上的循环移位。
周期序列在时间轴上左移右移m 反时针转称为圆周移位。
时域圆周卷积(循环卷积))()()(n h n x n y ⊗=()()()∑-=-=10)(N m N N n R m n h m x条件:两序列实现圆卷积的条件是:长度相等,如果不相等, 可通过增补零值来使之相等。
特点:卷积求和范围只在10-≤≤N m 有限区间进行;卷积时不作反褶平移, 而是反褶圆移步骤:量置换→反褶→圆移→相乘→求和。
三.两者的关系有限长序列的圆卷积和线卷积的关系在一般情况下,两序列的圆卷积和线卷积是不相等的,这是因为:线卷积是平移, 结果长度为121-+=N N L ;而圆卷积是圆移,结果长度为21N N L ==。
只有在两卷积的结果长度相时,二者才有相同的结果。
解决方法是:在作圆卷积时,通过加零的方法,使两序列的长度都增加到121-+=N N L ,此时,圆卷积的结果和线卷积同。
四.利用FFT 计算卷积工程实际需要解决的卷积:)()()(n h n x n y *=,但其计算量很大。
而圆卷积为:)()()(n h n x n y ⊗=,便于采用FFT 算法, 故计算速度快。
若将线卷积的两个序列用增补零的方法将长度取为一致,此时两序列的离散线卷积和圆周卷积结果是相等的,这样就则可以通过圆卷积来快速计算线卷积。
DFT计算卷积
0
M -1
L -1
k
y1 [k] k
0
M -1
L -1
例: 已知序列x[k]=k+2,0k12, h[k]={1,2,1}试利用重
叠保留法计算线性卷积, 取L=5 。 解: 重叠保留法
x1[k]={0, 0, 2, 3, 4} x2[k]={3, 4, 5, 6 ,7}
x4[k]={9, 10 , 11, 12,13} y1[k]= x1[k] ⑤h[k]= {11, 4, 2, 7, 12} y2[k]= x2[k] ⑤ h[k]= {23, 17, 16, 20, 24} y3[k]= x3[k] ⑤ h[k]= {35, 29, 28, 32, 36} y4[k]= x4[k] ⑤ h[k]= {47, 41, 40, 44, 48} y5[k]= x5[k] ⑤ h[k]= {12, 37, 52, 41, 14} y[k]={2, 7, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 41, 14}
x2 [0] x [1] 2 x [ M 1] 2 x [ L 1] 2 0 x1[0] x2 [ L M - 2]
x1[0] x1[1] x1[ M - 2] x1[ M - 1] x1[0] x1[ M - 3] x1[ M - 2] x1[0] x1[1]
2. 重叠保留法(overlap save) 方法:
(1) 将x[k]长序列分段,每段长度为L。
(2) 各段序列xn[k]与 M点短序列h[k]循环卷积。
(3) 从各段循环卷积中提取线性卷积结果。
因yn[k]=xn [k] L h[k] 前M-1个点不是线性卷积的点, 故分段时,每段与其前一段有M-1个点重叠。
数字信号处理期末试卷(共七套)
第一套试卷学号 姓名 成绩一、 选择题(每题3分,共5题) 1、)63()(π-=n j en x ,该序列是 。
A.非周期序列B.周期6π=N C.周期π6=N D. 周期π2=N2、序列)1()(---=n u a n x n ,则)(Z X 的收敛域为 。
A.a Z <B.a Z ≤C.a Z >D.a Z ≥3、若一线性移不变系统当输入为x(n)=δ(n)时输出为y(n)=R 3(n),则当输入为u(n)-u(n -2)时输出为 。
A.R 3(n)B.R 2(n)C.R 3(n)+R 3(n -1)D.R 2(n)+R 2(n -1) 4、)()(101n R n x =,)()(72n R n x =,用DFT 计算二者的线性卷积,为使计算量尽可能的少,应使DFT 的长度N 满足 。
A.16>NB.16=NC.16<ND.16≠N5.已知序列Z 变换的收敛域为|z |<1,则该序列为 。
A.有限长序列 B.右边序列 C.左边序列 D.双边序列 二、填空题(每题3分,共5题)1、离散时间信号,其时间为 的信号,幅度是 。
2、线性移不变系统的性质有__ ____、___ ___和分配律。
3、要想抽样后能够不失真的还原出原信号,则抽样频率必须 ,这就是奈奎斯特抽样定理。
4、序列R 4(n)的Z 变换为_____ _,其收敛域为____ __。
5、对两序列x(n)和y(n),其线性相关定义为 。
三、10)(-≤≥⎩⎨⎧-=n n ba n x nn求该序列的Z 变换、收敛域、零点和极点。
(10分)四、求()()112111)(----=z z Z X ,21<<z 的反变换。
(8分)五、已知两个有限长序列如下图所示,要求用作图法求。
(10分)六、已知有限序列的长度为8,试画出按频率抽选的基-2 FFT算法的蝶形运算流图,输入为顺序。
(10分)七、问答题:数字滤波器的功能是什么?它需要那几种基本的运算单元?写出数字滤波器的设计步骤。
数字信号处理期末试题库(精心整理)
一、单项选择题(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、IIIC.I、III D.I、II、III8. 在窗函数设计法,当选择矩形窗时,最大相对肩峰值为8.95%,N增加时, 2π/N减小,起伏振荡变密,最大相对肩峰值则总是8.95%,这种现象称为。
A.吉布斯效应B.栅栏效应C.泄漏效应 D.奈奎斯特效应9. 下面关于IIR滤波器设计说法正确的是。
重叠相加法
重叠相加法
1、重叠相加法介绍
重叠相加法(Overlapping summation law)是一种数学统计技术,它通过计算两个
数据序列中多次重叠的组合,来得到一个新的数据序列。
这是一种动态的技术,可以用于解决跨越时间的数据统计问题。
2、重叠相加法运用实例
重叠相加法可以用于多种数学统计任务,包括曲线拟合、贝叶斯统计分析、均值滤波和样本回归Method。
例如,在科学研究中,研究人员可以通过重叠相加法对一
系列实验数据进行多轮拟合,从而推断出一定规律或模式。
在工业生产中,也可以利用重叠相加法对生产数据进行分析,以便找出一系列可行的工艺改进方案,从而提高产品的质量和效率。
3、重叠相加法的优点
重叠相加法的优点在于它可以更有效地对跨越时间的数据、按照一定规律变化的数据进行多重曲线拟合,从而更容易形成一定的模式或推论。
而且它的运算量小,
计算量也比其他技术少,即使在复杂的数据统计过程中,它也能够提供良好的结果表现。
4、重叠相加法的缺点
重叠相加法的缺点也是很明显的,它无法直接处理实际数据中复杂的相互影响因素,也没有办法有效地把握实际数据的不确定性。
此外,重叠相加法局限于线性模型,只能拟合数据的简单线性关系,如果目标数据分布更加复杂,它就无能为力了。
重叠保留法修正
若定义M 若定义M = L –N+1,则 N+1,
2.重叠保留法 步骤: 2.重叠保留法—步骤: 重叠保留法—
1.对输入数据重叠分段为L 1.对输入数据重叠分段为L点,将N点h(n)补零为L点; 对输入数据重叠分段为 h(n)补零为 补零为L ′ 2.对每一段 2.对每一段 xk (n),计算L点循环卷积 yk (n) = xk (n) ⊗ h(n); 计算L 3.每段循环卷积输出去掉前面N 点只保留后面M 3.每段循环卷积输出去掉前面N-1点只保留后面M点; 每段循环卷积输出去掉前面 4.将每段 点输出拼接构成最终的线性卷积 4.将每段M点输出拼接构成最终的线性卷积。 将每段M 构成最终的线性卷积。
Digital Signal Processing
7 2011-11-25
1 2011-11-25
2.重叠保留法 2.重叠保留法
不满足利用循环卷积计算线性卷积的条件下, 利用循环卷积计算线性卷积的条件下 在不满足利用循环卷积计算线性卷积的条件下,循环卷积 的部分结果是有用的,可以将序列合理的分段处理 利用循环 合理的分段处理, 的部分结果是有用的,可以将序列合理的分段处理,利用循环 的部分结果来拼接线性卷积。 卷积的部分结果来拼接线性卷积 卷积的部分结果来拼接线性卷积。 设序列 h(n) 的分段方法为: 的长度为 N,则对长序列 x(n)的分段方法为: 1.先在序列 1.先在序列 x(n)前补 N −1 0; 个 2.对补 后的序列进行重叠分段 2.对补0后的序列进行重叠分段,每段的长度为 L ,与上一 对补0 重叠分段, 分段重叠N 分段重叠N-1点。
yk (n) = y 'k (n + N −1), n = 0,L, M −1
y(n+kM ) = ∑ yk (n),
数字信号处理复习题及参考答案
数字信号处理期末复习题一、单项选择题(在每个小题的四个备选答案中选出一个正确答案,并将正确答案的号码写在题干后面的括号内,每小题1分,共20分)1.要从抽样信号不失真恢复原连续信号,应满足下列条件的哪几条( ① )。
(Ⅰ)原信号为带限(Ⅱ)抽样频率大于两倍信号谱的最高频率(Ⅲ)抽样信号通过理想低通滤波器①.Ⅰ、Ⅱ②.Ⅱ、Ⅲ③.Ⅰ、Ⅲ④.Ⅰ、Ⅱ、Ⅲ2.在对连续信号均匀采样时,若采样角频率为Ωs,信号最高截止频率为Ωc,则折叠频率为( ④ )。
①Ωs ②.Ωc③.Ωc/2 ④.Ωs/23.若一线性移不变系统当输入为x(n)=δ(n)时输出为y(n)=R3(n),则当输入为u(n)-u(n-2)时输出为( ② )。
①.R3(n) ②.R2(n)③.R3(n)+R3(n-1) ④.R2(n)-R2(n-1)4.已知序列Z变换的收敛域为|z|>1,则该序列为( ② )。
①.有限长序列②.右边序列③.左边序列④.双边序列5.离散系统的差分方程为y(n)=x(n)+ay(n-1),则系统的频率响应( ③ )。
①当|a|<1时,系统呈低通特性②.当|a|>1时,系统呈低通特性③.当0<a<1时,系统呈低通特性④.当-1<a<0时,系统呈低通特性6.序列x(n)=R5(n),其8点DFT记为X(k),k=0,1,…,7,则X(0)为( ④ )。
①.2 ②.3③.4 ④.57.下列关于FFT的说法中错误的是( ① )。
①.FFT是一种新的变换②.FFT是DFT的快速算法③.FFT基本上可以分成时间抽取法和频率抽取法两类④.基2 FFT要求序列的点数为2L(其中L为整数)8.下列结构中不属于FIR滤波器基本结构的是( ③ )。
①.横截型②.级联型③.并联型④.频率抽样型9.已知某FIR滤波器单位抽样响应h(n)的长度为(M+1),则在下列不同特性的单位抽样响应中可以用来设计线性相位滤波器的是( ① )。
通过重叠相加法实现卷积
数字信号处理课程设计题目:通过重叠相加法实现卷积院系:自动化与信息工程学院专业:通信工程班级:通信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 序列的那一小段补零做卷积后,最终做累加的时候要考虑重叠的片段,必须将重叠的两段加起来。
guide设计——线性卷积的运算PPT课件
——重叠相加法、重叠保留法
2021/3/12
_耿如月
1
重叠相加法——代码
❖ function [Y]=overpl(x,h,N) ❖ Lx=length(x); %序列长度 ❖ M=length(h); %h(n)长度 ❖ x=[x,zeros(1,N-1)]; ❖ t=zeros(1,M-1); ❖ Y=zeros(1,Lx+M-1); ❖ a=floor(Lx/N);
GUIDE主要代码
❖ axes(handles.axes3); ❖ y2=overpl(Xn,Hn,str2num(get(handles.edit1,'string'))); ❖ y2_1=y2(1:(length(Xn)+length(Hn)-1)); ❖ y_2=stem(y2);grid; ❖ axis([0 14 0 50]) ❖ title('ÖصþÏà¼Ó·¨') ❖ set(y_2,'LineWidth',2);
2021/3/12
_耿如月
8
重叠保留法——调试
2021/3
❖ function do(hObject, eventdata, handles) ❖ Xn=[0 1 2 3 4 5 6 7 8 9 10]; ❖ Hn=[1 2 1 1 ]; ❖ axes(handles.axes1); ❖ hh_1=stem(Xn);grid; ❖ title('原序列') ❖ set(hh_1,'LineWidth',2); ❖ hold on ❖ hh_2=stem(Hn,'g');grid; ❖ set(hh_2,'LineWidth',2);
重叠相加法与重叠保留法原理
重叠相加法通过将多个重叠的图像或数据序列叠加在一起,可以获得更完整或更丰富的信息。这种方法常用于拼接图像和合并数据集。
重叠保留法则是一种保留重叠部分并处理其他部分的方法。它常用于图像拼接和数据处理中,可以保留重要细节和避免重复计算。
结论与展望
CATALOGUE
06
重叠相加法
01
该方法通过将重叠部分相加来计算重叠面积,适用于不同重叠程度和形状的图形重叠问题。在重叠面积较小的情况下,该方法能够得到较为精确的结果。
随着信号处理技术的发展,对重叠相加法和重叠保留法的研究有助于提高信号处理的效果和精度,进一步推动相关领域的技术进步。
深入理解这两种算法的原理和特点,有助于在实际应用中选择合适的算法,提高信号处理的效果和效率。
重叠相加法原理
CATALOGUE
02
重叠相加法是一种将多个重叠部分进行相加的方法,用于解决重叠或交叉的问题。
详细描述
重叠相加法适用于需要计算重叠部分总和的场景,而重叠保留法适用于需要保留最大值的场景。
总结词
重叠相加法适用于那些需要将重叠部分累加的场景,例如计算重叠部分的面积、体积等。而重叠保留法适用于那些需要保留最大值的场景,例如在图像处理中,重叠保留法可以用于保留最大的像素值,以突出显示图像中的重要区域。
跨学科合作
加强与其他学科领域的合作与交流,借鉴相关学科的理论和方法,推动重叠相加法和重叠保留法的进一步发展。
标准化与规范化
制定重叠相加法和重叠保留法的标准操作流程和规范,促进其在不同领域中的普及和应用。同时,加强与其他国家和地区的交流与合作,推动相关方法的国际标准化进程。
应用拓展
将重叠相加法和重叠保留法应用于更多领域,如地理信息系统、图像处理、生物信息学等。探索其在不同领域中的实际应用价值,为相关领域的研究提供新的思路和方法。
guide设计——线性卷积的运算PPT课件
-_耿如月
2
重叠相加法——代码
❖ for k=0:a ❖ A=x(k*N+1:k*N+N); ❖ y1=fft(A,Lx+M-1); %利用fft进行运算 ❖ y2=fft(h,Lx+M-1); ❖ y3=y1.*y2; ❖ q=ifft(y3,Lx+M-1); ❖ Y(k*N+1:k*N+M-1)=q(1:M-1)+t(1:M-1); ❖ Y(k*N+M:k*N+N)=q(M:N); ❖ t(1:M-1)=q(N+1:N+M-1); ❖ end ❖ Y(1:Lx+M-1);
-_耿如月
8重叠保留法——调试-耿如月9GUIDE主要代码
❖ function do(hObject, eventdata, handles) ❖ Xn=[0 1 2 3 4 5 6 7 8 9 10]; ❖ Hn=[1 2 1 1 ]; ❖ axes(handles.axes1); ❖ hh_1=stem(Xn);grid; ❖ title('原序列') ❖ set(hh_1,'LineWidth',2); ❖ hold on ❖ hh_2=stem(Hn,'g');grid; ❖ set(hh_2,'LineWidth',2);
-_耿如月
13
GUIDE主要代码
❖ axes(handles.axes4); ❖ y_3=stem(y-y2_1);grid; ❖ title('重叠相加法误差') ❖ set(y_3,'LineWidth',2);
-_耿如月
14
GUIDE部分代码说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字信号处理课程设计题目:通过重叠相加法实现卷积院系:自动化与信息工程学院专业:通信工程班级:通信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 序列的那一小段补零做卷积后,最终做累加的时候要考虑重叠的片段,必须将重叠的两段加起来。
不重叠的片段直接赋值。
其次是如果B 序列长度n2不是A 序列长度n1的整数倍时,必须将B 序列余下的那几个数补零后和A 序列做L 点循环卷积再加到最终的结果的相应位置。
下列是计算循环卷积的过程:在本次课设题中序列A 和B 序列的某一小段做循环卷积,由于已知A 序列的长度为n1,故可取B 序列的每一小段都和A 序列相等长度,并且取循环卷积的点数为112-⨯=n L ,这就保证每一组的循环卷积都等效于线性卷积。
做循环卷积可运用课本上82页上的循环卷积矩阵做,其第一步是将A 序列和B 序列的某一小段补零到长度为112-⨯=n L ,然后把A 序列通过变换生成列行L L 的循环卷积矩阵,将补零后的B 的某一小段转置,然后用循环卷积矩阵乘以它就可以得到循环卷积的结果,在此也即线性卷积。
重叠相加法的图示如下:二、流程图<主函数流程图><循环卷积子函数流程图>三、实验结果验证<一>当输入序列为x=[2 5 4 3 6]时,输入前后以及结果图形对比。
分析:当给定序列x和导入序列如图中所示时,二者做卷积结果在理论上应该是长度为5+200-1=204点的序列(如第四幅图所示),对比第二幅图和第四幅图可知运用分段重叠相加法计算的线性卷积完全正确。
四、界面设计说明:第一行第一个图是给定的序列,第二行第一个图是导入的序列的图形,第二行第一个图是本次设计的结果图形,第二行第二个图是直接调用系统函数y=conv(x)得到的结果。
界面上一个输入框,两个按钮,其中运行键控制整个系统的运行,退出键可以使其退出当前界面。
五、分析和总结在重叠相加法实现卷积中,对导入的序列进行了分段,原导入序列长度为n2,输入的序列长度为n1,则分段数i=n2/n1并向下取整,当n2不是n1的整数倍时,在最后一段进行补零,循环卷积长度为L=N+M-1,因为在计算线性卷积时,可以先计算分段线性卷积,然后把分段卷积结果叠加起来即可,因为对n2进行了分段处理,处理后分段的长度和n1相等故n1=N,M=n1,M=N,即:L=2*n1-1,否则将发生混叠。
叠加重叠点就可以得到输出序列的值。
通过自己编写函数的输出波形和系统自带函数的输出波形,对相同数据进行处理,进行对比,他们的结果完全相同,因此可以验证所编写的函数是正确的。
在进行matlab编程时,也出现了很多问题,通过和同学讨论,查阅相关资料最终都得以解决,同时也非常感谢指导老师的悉心指导。
参考文献【1】高西全,丁玉美.数字信号处理(第三版).西安:西安电子科技大学出版社,2008.05附录:主要程序三、源程序<一>、主函数源程序:A=input('请输入给定序列:');c=load('huang.txt'); %导入数据B=c';n1=length(A); %记序列A的长度n2=length(B); %记序列B的长度i=fix(n2/n1); %算B的长度是A的几倍,向下取整L=2*n1-1; %取循环卷积的长度,使其每小段%循环卷积满足和线性卷积等价y(1:L)=Convmy4(A,B(1:n1),L); %调用编好的循环卷积函数r(1:L)=y(1:L); %计算最终结果的前n1个点的值for p=2:1:i %循环s=B((p-2)*n1+1:(p-2)*n1+n1); %取B序列的第一小段存到sy((p-2)*n1+1:(p-2)*n1+L)=Convmy4(A,s,L); %计算第一小段和A序列循环卷积的%L点结果C(1:L-n1)=y((p-2)*n1+n1+1:(p-2)*n1+L); %将第一组做循环卷积得到的结果%重叠部分先转存到临时变量C中z=B((p-1)*n1+1:(p-1)*n1+n1); %取B序列的第二小段存到zy((p-1)*n1+1:(p-1)*n1+L)=Convmy4(A,z,L); %将其和A的循环卷积的结果给y for n=1:1:n1-1 %-------------------------y((p-1)*n1+n)=C(n)+y((p-1)*n1+n); %计算重叠部分的结果r((p-1)*n1+n)=y((p-1)*n1+n);end %-------------------------for n=n1:1:n1 %-------------------------y((p-1)*n1+n)=y((p-1)*n1+n); %计算没重叠部分的结果r((p-1)*n1+n)= y((p-1)*n1+n);end %------------------------- end %循环结束D(1:L-n1)=y((p-1)*n1+n1+1:(p-1)*n1+L); %*************************for n=n1+1:1:L %显示末尾的一段r((p-1)*n1+n)=D(n-n1);end %*************************if mod(n2,n1)~=0 %-------------------------h=mod(n2,n1);E=[B(i*n1+1:i*n1+h),zeros(1,n1-h)];F(1:L) =Convmy4(A,E,L);P(1:n1-1)=r((p-1)*n1+n1+1:(p-1)*n1+L); %如果n2不是n1的整数倍,则应for n=1:1:n1-1 %将B序列多余的那几个点补零再r(i*n1+n)=P(n)+F(n); %和A做循环卷积并显示出来endfor n=n1:1:Lr(i*n1+n)=F(n);endend %-------------------------q=conv(A,B); %调用系统函数做线性卷积,验证结%果r;x1=1:1:n1; %------------------------- subplot(2,2,1);stem(x1,A);title('给定序列A');grid on; %画原来输入的两个序列和最终x2=1:1:n2; %序列的图形subplot(2,2,3);stem(x2,B);title('导入序列B');grid on;x3=1:1:length(r);subplot(2,2,2);stem(x3,r);title('线性卷积结果图形');grid on ; %-------------------------x4=1:1:n1+n2-1; %************************* subplot(2,2,4); %画调用系统函数得到的结果图形stem(x4,q);title('直接调用系统函数得到的图形');grid on; %*************************<二>、循环卷积子函数:function y=Convmy4(A,B,L) %创建循环卷积函数if L<length(A)||L<length(B) %若A和B中任何一个序列长度大于L则出错 error('出错');endif L>length(A) %如果A序列长度小于L则补零到LA=[A,zeros(1,L-length(A))];endif L>length(B) %给B序列补零到LB=[B,zeros(1,L-length(B))];B=B'; %B转置endE=A(1,1); %---------------------------------C=A(1,[2:L]); %写循环矩阵的第一行D=fliplr(C);A=[E,D]; %---------------------------------y(1)=A(1,1).*B(1,1);for h=2:1:Ly(1)=y(1)+A(1,h).*B(h,1); % %计算循环卷积序列的第一个值endfor k=2:1:L %*********************************t=A(1,L);for i=L:-1:2A(1,i)=A(1,i-1); %得到矩阵的第二到L行并计算循环卷积的end %另外几个值A(1,1)=t;y(k)=0;for m=1:1:Ly(k)=y(k)+A(1,m).*B(m,1); %********************************* endend。