基于重叠保留法的圆周卷积
北邮《数字信号处理》Matlab实验——实现重叠相加和重叠保留算法完成线性卷积的分段计算

3L log 2 L L 次乘法运算, 3L log 2 L 次加法运算。可以看出: (1)当 M、N 2
取值较大且相近时,可实现对线性卷积的快速计算; (2)当 M、N 有较大差异时,线性卷积 和循环卷积运算量相当, 此时若希望降低线性卷积计算开销, 需采用重叠相加法或重叠保留 法。 重叠保留法和相加运行效率与分段长度关性较强。 分段数和卷积运算的序列长度为非线 性关系,在实际应用中,重叠保留和相加主要用于实施信号处理,在保证实时性的要求下, 输入序列的分段不能太长。
M‐1 点缓存 后 M‐1 点 xl(n) N+M‐1 点 循环卷积 后 N 点 y(n)
序列衔接
每 N 点输入
h(n)
2、流程图及源代码
重叠相加法
开始
重叠保留法
开始
输入序列 X(n),h(n)
输入序列 X(n),h(n)
计算各序列长度、 分 段数、 生成临时序列
5、总结实验过程中出现的问题以及解决问题的具体措施
1.利用自定义函数解决代码重复使用的问题,避免多次输入同样代码。 2.构造分段补零不会实现,通过上网查资料后获得实现相关功能的代码。
实验题目 1:线性卷积的分段计算
实验目的:
实现重叠相加和重叠保留算法,完成线性卷积的分段计算(可任意指定 x(n)及 h(n)) 。
试验内容:
1、对算法的概括性说明
重叠相加法是将待过滤的信号分割成长为 N 的若干段,每一段都可以和有限时宽单位 取样响应作卷积,再将过滤后的各段重叠相加。建立缓存序列,每次输入 N 点序列,通过 计算 x(n)和 h(n) 的循环卷积实现线性卷积运算,将缓存的 M‐1 点序列和卷积结果相加,并 输出前 N 点作为计算结果,同时缓存后 M‐1 点,如此循环,直至所有分段计算完毕,则输 出序列 y(n)为最终计算结果。
重叠相加法和重叠保留法的原理与实现

重叠相加法与重叠保存法的原理实现侯凯(吉林大学 通信工程学院 吉林 长春 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)卷积,然后再将这些卷积结果相加起来就可得到输出序列,这样,每一段的卷积都可用上面讨论的快速卷积来计算。
chap2习题解答

DFT [ y ( n )] 与 X ( k ) 的关系.
2
X (k ) =
∑ x ( n )W
n=0
N −1
kn N rN − 1
Y ( k ) = D F T [ y ( n )] =
∑
− j
y ( n )W
n=0
kn rN
=
∑ x ( n )W
n=0
N −1
kn rN
由 于 n ≤ N-1时 ,y(n)=x(n); n > N − 1时 ,y(n)=0. 由于W
n ⎧ ⎪ x ( n ) = a RN ( n ) ⎨ n ⎪ ⎩ y ( n ) = b RN ( n )
注意: 根据 DFT 的线性性质可以得到,当
f ( n ) = x ( n ) + jy ( n ) 时, F ( k ) = X ( k ) + jY ( k ) ,其中
IDFT 就一定形成
,
4 2 很多同学在第二列 W16 的位置写的是 W16
kn X (k ) = ∑ x(n)W16 , k = 0,1,...,15 n =0
15
按奇偶分组:
2 rk (2 r +1) k X(k)=∑ x(2r )W16 + ∑ x(2r + 1)W16 r =0 r =0 7 7
= ∑ x(2r )W
1
习题 2.12 解:
X ( k ) = DFT ⎡ ⎣ x ( n )⎤ ⎦ = ∑ x ( n )W
n=0
N −1
kn N
= ∑ x ( n )e
n =0
N −1
−j
2π kn N
k ∈ [ 0, N − 1]
重叠保留法课程设计

郑州轻工业学院课程设计说明书题目:重叠保留法源程序设计姓名:院(系):计算机与通信工程学院专业班级:通信工程11-01学号:指导教师:杨永双成绩:时间:2013 年12月16 日至2013 年12月20 日1郑州轻工业学院课程设计任务书题目重叠保留法源程序设计专业、班级通信工程11-01学号姓名主要内容:1、编写重叠保留法源程序,不能使用matlab自带的函数2、程序运行结果与matlab自带函数结果进行对比3、完成符合学校要求的设计说明书基本要求:1、小组讨论并完善重叠保留法的源程序2、个人整理重叠保留法源程序设计的实验报告完成期限:2013年12月18日指导教师签名:课程负责人签名:2013 年 12 月 18 日2重叠保留法源程序设计摘要:重叠保留法在运用时,随着数据规模的增大,运算耗时呈线性增长。
当数据达到千万量级时,运算延时最少大约为2.335s,由此可见,此方法可运用于对信号的实时处理,同时重叠保留法具有较好的时间和空间复杂度。
本次课程设计以matlab为工具得到重叠保留法的源程序,通过对序列的线性卷积计算,进而对重叠保留法进行更深层次的认识。
关键字:重叠保留法序列线性卷积3目录一、前言 (5)二、重叠保留法原理 (5)1、背景 (5)2、原理 (5)三、设计 (6)1、设计思想 (6)2、流程图 (6)3、程序及结果 (7)四、遇到问题及解决方法 (8)五、总结 (9)1、算法效率分析 (9)2、体会 (9)六、参考文献 (10)45一、前言重叠保留法可运用于对信号的实时处理,具有较好的时间和空间复杂度。
此次实验,使用matlb 对重叠保留法进行源程序设计,通过对序列的线性卷积计算,我们可以对重叠保留法的优缺点进行更深刻的认识。
二、重叠保留法原理1、背景对于线性非移变离散系统,可由线性卷积表示时域输入输出关系,即 y(n)=x(n)*h(n)线性卷积是求离散系统响应的主要方法之一,许多重要应用都建立在这一理论基础上,如卷积滤波等,但此方法适用于x(n)、h(n)两序列长度比较接近或相等的情况,如果x(n)、h(n)长度相差较多,按上述方法,h(n)要补许多零再进行计算,计算量有很大的浪费,或者根本不能实现。
数字信号处理教程答案

数字信号处理教程 课后习题及答案目录第一章 离散时间信号与系统 第二章 Z 变换第三章 离散傅立叶变换 第四章 快速傅立叶变换 第五章 数字滤波器的基本结构第六章 无限长单位冲激响应(IIR )数字滤波器的设计方法 第七章 有限长单位冲激响应(FIR)数字滤波器的设计方法 第八章 数字信号处理中有限字长效应第一章 离散时间信号与系统1 。
直接计算下面两个序列的卷积和)n (h *)n (x )n (y =请用公式表示。
分析:①注意卷积和公式中求和式中是哑变量m ( n 看作参量),结果)(n y 中变量是 n ,; )()()()()(∑∑∞-∞=∞-∞=-=-=m m m n x m h m n h m x n y ②分为四步 (1)翻褶( -m ),(2)移位( n ),(3)相乘,00 , 01()0 , ,()0,n n n a n N h n n n n x n n n β-⎧≤≤-=⎨⎩⎧≤⎪=⎨<⎪⎩其他; )( )( 4n y n n y n 值的,如此可求得所有值的)相加,求得一个( ③ 围的不同的不同时间段上求和范一定要注意某些题中在 n 如此题所示,因而要分段求解。
2 。
已知线性移不变系统的输入为)n (x ,系统的单位抽样响应 为)n (h ,试求系统的输出)n (y ,并画图)(5.0)(,)1(2 )()4()(5.0)(,)2( )()3()()(,)( )()2()()(,)( )()1(3435n u n h n u n x n R n h n n x n R n h n R n x n R n h n n x n n n =--==-=====δδ分析:①如果是因果序列)(n y 可表示成)(n y ={)0(y ,)1(y ,)2(y ……},例如小题(2)为()∑∑∑+-=+-=--+===-=-+≥nN n m mn n nN n m mn n m nn m m n h m x n y N n n 111N -00)()()( , 1)3(αββααβ全重叠时当()()()()βααβαβαβαββααβαβαβ==≠--=--=---+++--,)(,100111n n N N n N n n N n n nN n y ∑∞-∞=-==m m n h m x n h n x n y )()()(*)()(:解0)()1(0=<n y n n 时当, 1)2(00部分重叠时当-+≤≤N n n n ()∑∑∑==--===-=nn m mnn n n m mn n m nn m m n h m x n y 0)()()(αββααβ()()βαβαβαβααβαβαβ≠--=--=-+-++-,100111nn n n n n n n())(,1)(00βαα=-+=-n n n y n n)(n y ={1,2,3,3,2,1} ;②)()(*)( , )()(*)(m n x n x m n n x n x n -=-=δδ ;③卷积和求解时,n 的分段处理。
《数字信号处理》课程几个容易混淆的问题

1 系统因果稳定性系统因果稳定性的判断方法有三种。
第一种是定义法,即因果系统是指某时刻的输出只取决于此时刻和此时刻以前时刻的输入,稳定系统是指有界输入产生有界输出。
第二种方法是线性时不变系统的充分必要条件,因果性是指n<0时,冲激响应函数h(n)=0。
稳定性是|()|n h n P ∞=-∞=<∞∑。
第三种方法是线性时不变系统的收敛域法,即系统函数H(z)必须在从单位圆到无穷的整个z 域内收敛。
注意第一种判断法是通式,可适用于任何系统,而第二、三种方法仅适用于线性时不变系统。
例题1:判断系统()()[()]x n y n T x n e==的因果稳定性。
解法一:定义法。
y(n)只与x(n)有关,∴是因果系统。
又|()|,()AAx n A y n e e-<<<∴ 则系统稳定。
解法二:充分必要条件法。
()()()0()10|()|||...1111...n n n n h n n h n h n e ee eδδ∞∞=-∞=-∞=<==≠∴==++++++→∞∴∑∑当时,是非因果系统。
又是非稳定系统。
为什么用两种方法得出相反的结论呢? 分析一下, 第一种判断法是通式,可适用于任何系统,而第二、三种方法仅适用于线性时不变系统。
那么此系统是否为线性时不变系统呢?由于1212()()12()()1212()()()()()()n n n n ax bx T n n ax bx T n T n aT n bT n ax bx e e e ax bx x x +⎡⎤=⎣⎦=⎡⎤⎡⎤=⎣⎦⎣⎦⎡⎤⎡⎤≠+⎣⎦⎣⎦+所以此系统为非线性系统,不能用第二种方法判断。
因此,解法一的答案正确。
此题告诉我们,应用定理时要注意定理的应用范围。
2 翻褶移位函数的实现及其z 变换大多数教科书中分别介绍了移位和翻褶这两种运算。
若某序列为x(n),则x(n+m) 表示x(n)逐项依次左移(m>0)位。
数字信号处理课设-- 基于重叠保留法圆周卷积的实现

学号: 0121309341830课 程 设 计2015——2016学年 第1学期课程名称 信号分析与处理课程设计——基于重叠保留法圆周卷积的实现 学 院 信息工程学院 专 业电子信息工程 班 级 电信1301班姓 名 秦子越指导教师吴巍课程设计任务书学生姓名:秦子越专业班级:电信1301 指导教师:吴巍工作单位:信息工程学院题目:基于重叠保留法圆周卷积的实现初始条件:具备数字信号处理的理论知识;具备Matlab编程能力;分析重叠保留法的圆周卷积的原理;提供编程所需要的计算机一台要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、独立编写程序实现基于重叠保留法的圆周卷积2、用Matlab验证程序结果,并分析重叠保留法的圆周卷积的原理3、完成符合学校要求的设计说明书时间安排:一周,其中3天程序设计,2天程序调试指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (1)Abstract (2)1.绪论 (3)2.理论知识 (5)2.1 圆周卷积的定义 (5)2.2 圆周卷积的运算 (5)2.3 重叠保留法原理 (6)3.程序代码实现 (7)3.1 程序流程分析 (7)3.2 程序代码设计 (9)4.用Matlab验证程序结果 (11)5.原理分析 (14)6.心得体会 (15)参考文献 (16)附录 (17)本科生课程设计成绩评定表 (19)摘要MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国The MathWorks 公司出品的商业数学软件。
MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
本文用MATLAB实现基于重叠保留法的圆周卷积。
若x1(n)是很长的序列,利用圆周卷积时,x2(n)必须补很多零点,很不经济。
因此必须将x1(n)分成和x2(n)相仿的段,分别求出每段的卷积结果,然后用一定的方式把他们合在一起,从而得到总的输出。
数字信号处理判断题

判断题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)也反转。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 。
1.3重叠保留法为了克服重叠相加法中分段卷积后,仍然需要相加的缺点,人们提出了重叠保留法。
与重叠相加法不同的是,对无限长序列()n x 1进行分段时,前一分段()n x k 1的后1-M 个抽样值与后一份段的()()n x k 11+的前1-M 个抽样值相同,且分段的长度选圆周卷积的长度L ,这样形成的分段序列为当10-≤≤L n 时,()()11+-+=M kN n x n x k ,其他时()01=n x k 。
然后计算()n x 2与各分段()n x k 1之间的卷积()()()n x n x n k k 12'*y =,显然,()n k 'y 的前1-M 个值发生了混叠,不等于()n x 2与()n x k 1的卷积。
把()n k 'y 的前1-M 个值舍去,保留()n k 'y 没有发生混叠的后N 个值,形成序列()()n n y k k 'y =,11-≤≤-L n M ,()0=n y k ,其他。
最后输出序列()()∑+∞-∞=-+-=k kM kN n y n y 12.程序设计2.1程序流程要实现基于重叠保留法的圆周卷积,假设有两个长度分别为N,M (M N >)的序列()n x 1,()n x 2,要求做()n x 1和()n x 2L 的圆周卷积。
首先要对长序列序列()n x 1进行分段,分段的长度选圆周卷积的长度L ,形成的分段序列:()()⎩⎨⎧-≤≤+-+=其他,010,11L n M kN n x n x k 然后将()n x 2逐一和各分段()n x k 1进行圆周卷积,得到()n x x n y k k 12⊙)(=()()()∑-=-=112L m L LkR m n x m x最后输出序列()()∑+∞-∞=-+-=k kM kN n y n y 1这样即完成了基于重叠保留法的圆周卷积的实现。
2.2程序流程图2.3具体程序设计首先编写基于重叠保留法的圆周卷积的主函数。
这个主函数的功能应当是计算出两个序列的长度N、M,将长序列进行分段,然后再将短序列和长序列的各个分段分别进行圆周卷积,将分段卷积的的结果序列的前M-1个值舍去,将各个结果合并到一个序列中去,输出这个新序列,程序功能基本完成。
主函数的编写过程如下定义主函数:function yn = dupconv( xn,hn )计算两个序列的长度:M=length(hn);xn=[xn zeros(1,M-1)];N=length(xn);将长序列按照重叠保留法进行分段:xn1=[zeros(1,M-1),xn(1:floor(N/4))];xn2=xn((floor(N/4)-M+2):floor(N/2));xn3=xn((floor(N/2)-M+2):floor(N*3/4));xn4=xn((floor(N*3/4)-M+2):N);将短序列和长序列的各分段进行圆周卷积,这里是通过调用圆周卷积函数实现的,圆周卷积函数将在后面定义出。
代码如下:n1=length(xn1);n2=length(xn2);n3=length(xn3);n4=length(xn4);yn1=timecirconv(xn1,hn,n1);yn2=timecirconv(xn2,hn,n2);yn3=timecirconv(xn3,hn,n3);yn4=timecirconv(xn4,hn,n4);将分段圆周卷积的结果序列舍去前M-1个值,yn1=yn1(M:n1);yn2=yn2(M:n2);yn3=yn3(M:n3);yn4=yn4(M:n4);将各个分段序列按顺序合起来,yn=[yn1 yn2 yn3 yn4];函数结束,end由于圆周卷积是通过调用圆周卷积函数来实现的,所以现在要编写一个能实现圆周卷积功能的函数。
将函数名命名为timecirconv,代码如下:定义圆周卷积函数:function yn = timecirconv( xn,hn,N )计算两序列的长度,并和N进行比较,如果N小于两个序列的长,则输出错误:len1=length(xn)len2=length(hn);if len1>N | len2>Nerror('N must biger than length of xn and hn')end将两个序列延长成长度为N的序列,不足的补零:xn=[xn zeros(1,N-len1)];hn=[hn zeros(1,N-len2)];将hn进行沿纵坐标翻转后进行圆周移位,并将其存入一个N行N列的矩阵x中m=0:N-1;x=zeros(N,N);for n=0:N-1x(:,n+1)=hn(mod((n-m),N)+1);end将xn和矩阵x相乘,最终的得到圆周卷积的结果:yn=xn*x;函数结束:end2.4编写的完整的程序function yn = dupconv( xn,hn )M=length(hn);xn=[xn zeros(1,M-1)];N=length(xn);xn1=[zeros(1,M-1),xn(1:floor(N/4))];xn2=xn((floor(N/4)-M+2):floor(N/2));xn3=xn((floor(N/2)-M+2):floor(N*3/4));xn4=xn((floor(N*3/4)-M+2):N);n1=length(xn1);n2=length(xn2);n3=length(xn3);n4=length(xn4);yn1=timecirconv(xn1,hn,n1);yn2=timecirconv(xn2,hn,n2);yn3=timecirconv(xn3,hn,n3);yn4=timecirconv(xn4,hn,n4);yn1=yn1(M:n1);yn2=yn2(M:n2);yn3=yn3(M:n3);yn4=yn4(M:n4);yn=[yn1 yn2 yn3 yn4];endfunction yn = timecirconv( xn,hn,N )len1=length(xn);len2=length(hn);if len1>N | len2>Nerror('N must biger than length of xn and hn') endxn=[xn zeros(1,N-len1)];hn=[hn zeros(1,N-len2)];;m=0:N-1;x=zeros(N,N);for n=0:N-1x(n+1,:)=hn(mod((n-m),N)+1);endyn=xn*x;3.用MATLAB印证程序假设有这样的两个序列,序列1为x1=n(0≤n≤15),序列2为x2=n+1(0≤n≤3)要求这两个序列基于重叠保留法的的圆周卷积。
显然第一个序列的长度为16,第二个序列的长度为4,在长序列的尾部加上4-1个零,拓展为长度为19的序列。
将长序列分段x11=[0 0 0 0 1 2 3 ]x12=[1 2 3 4 5 6 7 ]x13=[5 6 7 8 9 10 11]X14=[9 10 11 12 13 14 15]将x1的各分段和x2=[1 2 3 4]进行圆周卷积‘得到Y11=x11⊙x2=[0 4 11 20 14 8 3]Y12=x12⊙x2=[30 40 50 60 42 31 27]Y13=x13⊙x2=[70 80 90 100 82 71 67]Y14=x14⊙x2=[110 120 130 140 122 111 107] 将每个分段卷积后的序列的前4-1个值舍去,再按顺序将序列合并,得到序列:yn=[20 14 8 3 60 42 31 27 00 82 71 67 140 122 111 107]以上的结果是根据计算所得到的结果。
下面用程序来验证。
运行程序在comand window中输入>> xn=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15];>> hn=[1 2 3 4];>> yn = dupconv( xn,hn );得到的结果为:yn=[20 14 8 3 60 42 31 27 00 82 71 67 140 122 111 107]显然,计算结果和程序运行结果相同4.原理分析对于一个长序列()n x 1和一个短序列()n x 2,长度分别为N ,M ,圆周卷积的长度为L ,在长序列的前面加上1-M 个零,然后对长序列进行分段,使得每段的长度为L 不足的用零补。