用matlab实现循环卷积,利用matlab实现循环卷积.doc

41528d3028836879cd698677c3999917.gif利用matlab实现循环卷积.doc

1、实验目的1利用MATLAB实现循环卷积。2比较循环卷积与线性卷积的区别。二、实验条件PC机,MATLAB703、实验内容1)循环卷积的定义两个序列的N点循环卷积定义为010NNMXHNXHK利用MATLAB实现两个序列的循环卷积可以分三个步骤完成1初始化确定循环点数N,测量输入2个序列的长度。2循环右移函数将序列XN循环右移,一共移N次(N为循环卷积的循环次数),最后将每次循环成的新序列组成一个矩阵V。3相乘将XN移位后组成的矩阵V与第二个序列HN对应相乘,即得循环卷积结果。程序如下程序一CLEARCLOSEALLN10X1615635701X2712943206XN1LENGTHX1XXN10XN11XN2LENGTHX2XXN20XN21SUBPLOT3,1,1STEMXXN1,X1SUBPLOT3,1,2STEMXXN2,X2X11FFTX1,NX12FFTX2,NY11X11X12Y1IFFTY11,NSUBPLOT3,1,3N0LENGTHY11STEMN,Y1, TITLE 循环卷积的结果 XLABEL N YLABEL Y1N 运行后所得图形如下观察所得的循环卷积结果发现并没有呈现周期性的序列,因此将程序做下列改变。程序二CLEARCLOSEALLN40X1615635701X2712943206X2X2,X2,X2,X2XN1LENGTHX1XXN10XN11XN2LENGTHX2XXN20XN21SUBPLOT3,1,1STEMXXN1,X1SUBPLOT3,1,2STEMXXN2,X2X11FFTX1,NX12FFTX2,NY11X11X12Y1IFFTY11,NSUBPLOT3,1,3N0LENGTHY11STEMN,Y1, TITLE 循环卷积的结果 XLABEL N YLABEL Y1N 从图中可以看出循环卷积的结果已经呈循环序列。将程序进一步改进在X2序列之间加一些零矩阵;程序如下CLEARCLOSEALLN50X1615635701X2712943206X2X2,ZEROS1,7,X2,ZEROS1,7,X2,ZEROS1,7,X2XN1LENGTHX1XXN10XN11XN2LENGTHX2XXN20XN21SUBPLOT3,1,1STEMXXN1,X1SUBPLOT3,1,2STEMXXN2,X2X11FFTX1,NX12FFTX2,NY11X11X12Y1IFFTY11,NSUBPLOT3,1,3N0LENGTHY11STEMN,Y1, TITLE 循环卷积的结果 XLABEL N YLABEL Y1N 2)线性卷积与循环卷积的区别从循环卷积的定义公式中可以看出,循环卷积和线性卷积的不同之处在于①两个N点序列的N点循环卷积的结果仍为N点序列,而两个N点序列线性卷积的结果的长度则变为为2N1;②循环卷积对序列的移位采取循环移位,而线性卷积对序列则是采取线性位移。而就是这两点不同,导致循环卷积和线性卷积有不同的结果和性质。然而虽然循环卷积和线性卷积虽然是不同的概念,但是它们之间有一个有意义的公式联系在一起,其中 NGRNYNXHNYRN也就是说,两个序列的N点循环卷积是他们的线性卷积以N为周 XHNY期的周期延阔。设序列HN的长度为,序列XN的长度为,此时,线性卷积结12果的序列的点数为因此如果循环卷积的点数N小于,那么 21N121上述周期性延阔的结果就会产生混叠,从而两种卷积会有不同的结果。而如果N满足的条件,就会有。这就会意味着在时域不会产生混 N0 NYN叠。因此,可以得出结论若通过在序列的末尾填充适当的零值,使得XN和HN成为点序121列,并作出这两个序列的循环卷积与线性卷积的结果在范围内121NNN0相同。将循环卷积的结果与线性卷积做对比,程序如下CLEARCLOSEALLN50X1615635701X21712943206X2X21,ZEROS1,7,X21,ZEROS1,7,X21,ZEROS1,7,X21XN1LENGTHX1XXN10XN11XN2LENGTHX2XXN20XN21SUBPLOT4,1,1STEMXXN1,X1SUBPLOT4,1,2STEMXXN2,X2X11FFTX1,NX12FFTX2,NY11X11X12Y1IFFTY11,NSUBPLOT4,1,3N0LENGTHY11STEMN,Y1, TITLE 循环卷积的结果 XLABEL N YLABEL Y1N Y2CONVX1,X21SUBPLOT4,1,4STEMY2, TITLE 线性卷积的结果 XLABEL N YLABEL Y2N 关于循环卷积,需要知道循环卷积仅仅是针对离散傅里叶变换;然而,这里的循环是针对周期序列而言的;而线性卷积是针对有限长序列,要用DFT求线性卷积,必然要求周期序列的一个周期内求卷积能和有限长序列求线性卷积等值。因此需要求N点长度的循环卷积必然要和线性卷积的长度一致。至少N要不少于线性卷积的长度。四、实验结论和讨论1学习了与循环卷积相关的概念,知道了有限长序列的循环移位是指,NRYMN也就是先让序列YN以N为周期进行周期延拓,再进行反折,然后朝右移位,只朝一个方向移位的原因是对周期序列向右移动一个位置,也就相当于向左移动了N-1个位置,最后取(0,N-1)的N个值就得到了循环移位后的N个序列值。设有序列XN和YN,其N点循环卷积为由于10NKNRMXHMY(循环移位的关系最后得到的循环卷积的长度就是N点,M取0,1,2,„,N1。循环卷积的简介表示为。NXHMY熟知了循环卷积的算法以及如何用MATLAB实现循环卷积的运算。一共分为三步分别是初始化确定循环点数N,测量输入2个序列的长度,长度小于N的在后面补0;循环右移函数将序列XN循环右移,一共移N次(N为循环卷积的循环次数),最后将每次循环成的新序列组成一个矩阵V;相乘将XN移位后组成的矩阵V与第二个序列HN对应相乘,即得循环卷积结果。2再次复习了一边线性卷积的相关性质,比较了线性卷积与循环卷积之间相同与不同之处。知道当循环卷积L线性卷积的长度时,线性卷积的结果与循环卷积的结果是相等的;但是循环卷积首先长度是不变的,而线性卷积的长度是L1L21,也就是说积分或者求和的上限是不一样的,前者是1N,而后者是无穷。3通过这次设计我也发现了自身存在的一些问题,程序的逻辑虽然在脑海中能有一个大概的轮廓,但是要将它实现并写出完整的程序却还是有些困难。虽然这次程序在老师的指导和帮助下写了出来,但是在一些基础的语言结果比如零矩阵的数输写还无法在没有程序的参考下写出来。这也体现了我对MATLAB还不熟悉,需要更多的练习来巩固和完善自己。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值