资源描述:
《利用MATLAB实现循环卷积.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、实验目的1.利用MATLAB实现循环卷积。2.比较循环卷积与线性卷积的区别。二、实验条件PC机,MATLAB7.0三、实验内容1)循环卷积的定义:两个序列的N点循环卷积定义为:利用MATLAB实现两个序列的循环卷积可以分三个步骤完成: (1)初始化:确定循环点数N,测量输入2个序列的长度。 (2)循环右移函数:将序列x(n)循环右移,一共移N次(N为循环卷积的循环次数),最后将每次循环成的新序列组成一个矩阵V。 (3)相乘:将x(n)移位后组成的矩阵V与第二个序列h(n)对应相乘,即得循环卷积结果。程序如下:程序一:clear;closeall;N=10;x1=[615-635
2、701];x2=[712943206];xn1=length(x1);xxn1=0:xn1-1;xn2=length(x2);xxn2=0:xn2-1;subplot(3,1,1);stem(xxn1,x1);subplot(3,1,2);stem(xxn2,x2);x11=fft(x1,N);x12=fft(x2,N);y11=x11.*x12;y1=ifft(y11,N);subplot(3,1,3);n=0:length(y1)-1;stem(n,y1,'.');title('循环卷积的结果');xlabel('n');ylabel('y1(n)');运行后所得图形如下:观察
3、所得的循环卷积结果发现并没有呈现周期性的序列,因此将程序做下列改变。程序二:clear;closeall;N=40;x1=[615-635701];x2=[712943206];x2=[x2,x2,x2,x2];xn1=length(x1);xxn1=0:xn1-1;xn2=length(x2);xxn2=0:xn2-1;subplot(3,1,1);stem(xxn1,x1);subplot(3,1,2);stem(xxn2,x2);x11=fft(x1,N);x12=fft(x2,N);y11=x11.*x12;y1=ifft(y11,N);subplot(3,1,3);n=0
4、:length(y1)-1;stem(n,y1,'.');title('循环卷积的结果');xlabel('n');ylabel('y1(n)');从图中可以看出循环卷积的结果已经呈循环序列。将程序进一步改进——在x2序列之间加一些零矩阵;程序如下:clear;closeall;N=50;x1=[615-635701];x2=[712943206];x2=[x2,zeros(1,7),x2,zeros(1,7),x2,zeros(1,7),x2];xn1=length(x1);xxn1=0:xn1-1;xn2=length(x2);xxn2=0:xn2-1;subplot(3,1,
5、1);stem(xxn1,x1);subplot(3,1,2);stem(xxn2,x2);x11=fft(x1,N);x12=fft(x2,N);y11=x11.*x12;y1=ifft(y11,N);subplot(3,1,3);n=0:length(y1)-1;stem(n,y1,'.');title('循环卷积的结果');xlabel('n');ylabel('y1(n)');2)线性卷积与循环卷积的区别:从循环卷积的定义公式中可以看出,循环卷积和线性卷积的不同之处在于:①两个N点序列的N点循环卷积的结果仍为N点序列,而两个N点序列线性卷积的结果的长度则变为为2N-1;②循
6、环卷积对序列的移位采取循环移位,而线性卷积对序列则是采取线性位移。而就是这两点不同,导致循环卷积和线性卷积有不同的结果和性质。 然而虽然循环卷积和线性卷积虽然是不同的概念,但是它们之间有一个有意义的公式联系在一起,其中;也就是说,两个序列的N点循环卷积是他们的线性卷积以N为周期的周期延阔。设序列h(n)的长度为,序列x(n)的长度为,此时,线性卷积结果的序列的点数为;因此如果循环卷积的点数N小于,那么上述周期性延阔的结果就会产生混叠,从而两种卷积会有不同的结果。而如果N满足的条件,就会有。这就会意味着在时域不会产生混叠。因此,可以得出结论:若通过在序列的末尾填充适当的零值,使得x(
7、n)和h(n)成为点序列,并作出这两个序列的循环卷积与线性卷积的结果在范围内相同。将循环卷积的结果与线性卷积做对比,程序如下:clear;closeall;N=50;x1=[615-635701];x21=[712943206];x2=[x21,zeros(1,7),x21,zeros(1,7),x21,zeros(1,7),x21];xn1=length(x1);xxn1=0:xn1-1;xn2=length(x2);xxn2=0:xn2-1;subplot(4,1