好文档 - 专业文书写作范文服务资料分享网站

循环卷积和圆周卷积

天下 分享 时间: 加入收藏 我要投稿 点赞

循环卷积与圆周性卷积的实现

一、实验目的

(1)进一步理解并掌握循环卷积与线性卷积和圆周卷积和的概念。 (2)理解掌握三者的关系。

二、实验原理

两个序列的N点循环卷积定义为

?h(n)?x(n)?N??h(m)x((n?m))N (0?n?N) (9-16)

k?0N?1从定义中可以看到,循环卷积和线性卷积的不同之处在于:两个N点循环卷积的结果仍为N点序列,而它们的线性卷积的结果的长度则为2N-1;循环卷积对序列的移位采取循环移位,而线性卷积对序列采取线性移位。正是这些不同,导致了线性卷积和循环卷积有不同的结果和性质。

循环卷积和线性卷积虽然是不同的概念,但它们之间由一个有意义的公式联系在一起

y(n)??h(n)?x(n)?N?(?y'(n?rN))GN(n) (9-17)

k?0N?1其中y'(n)?h(n)*x(n)

也就是说,两个序列N点循环卷积是它们的线性卷积以N为周期的周期延拓,设序列h(n)的长度为N1,序列x(n)的长度为N2,此时,线性卷积结果的序列的点数为N'?N1?N2?1,因此如果循环卷积的点数N小于N1?N2?1,那么上述周期延拓的结果就会产生混叠,从而两种卷积会有不同的结果。而如果N满足N?N'的条件,就会有

y(n)?y'(n) (0?n?N) (9-18)

这就意味着在时域不会产生混叠。因此,我们得出结论:若通过在序列的末尾充填适当的零值,使得x(n)和h(n)成为N1?N2?1点序列,并作出这两个序列的N1?N?1循环卷积,那么循环卷积与线性卷积的结果在0?n?N范围内相同。

根据DFT循环卷积性质中的卷积定理

DFT?[h(n)?x(n)]N??DFT[x(n)]?DFT[h(n)]

(9-19)

便可通过两种方法求两个序列的循环卷积:一是直接根据定义计算,二是根据性质线分别求两个序列的N点DFT,并相乘,然后取IDFT以得到循环卷积。第二种方法看起来要经过若干过程,但由于序列的DFT和IDFT都有快速算法,因此它的效率比第一种方法高得多。

同样,根据线性卷积和循环卷积的关系,可以通过计算循环卷积以求得线性卷积,提高计算序列线性卷积的效率。

三、例题及理论计算

已知有限长序列x(n)与h(n)如图试画出: (1) x(n)与h(n)的线卷积 (2) x(n)与h(n)的7点圆卷积 (3) x(n)与h(n)的5点圆卷积

五点卷积图

四、matlab仿真

用matlab仿真, 方法一:

function y=circonv1(x1,x2,N)

%realize circular convolution use dft method if length(x1)>N

error('N must not be less than length of x1') end

if length(x2)>N

error('N must not be less than length of x2') end

X1k=[x1,zeros(1,N-length(x1))]; X2k=[x2,zeros(1,N-length(x2))]; n=[0:1:N-1]

x2=x2(mod(-n,N)+1); H=zeros(N,N); for n=1:1:N;

H(n,:)=cirshifted(x2,n-1,N); end

y1=x1*H';

function y=cirshifted(x,m,N) if length(x)>N

error('N必须大于等于x的长度') end

x=[x,zeros(1,N-length(x))]; n=[0:1:N-1]; n=mod(n-m,N); y=x(n+1);

方法二:

function y=circonv2(x1,x2,N)

%realize circular convolution use dft method if length(x1)>N

error('N must not be less than length of x1') end

if length(x2)>N

error('N must not be less than length of x2') end

X1k=fft(x1,N); X2k=fft(x2,N); Yk=X1k.*X2k; Y=ifft(Yk);

If(all(imag(x1)==0))&(all(imag(x2)==0)) Y=real(y); end

运行程序:

n=[0:1:4];m=[0:1:4];

N1=length(n);N2=length(m); xn=ones(1,N1); hn=m;

y1n=conv(xn,hn);

y2n=circonv1(xn,hn,N1+N2-1); y3n=circonv2(xn,hn,N1); ny1=[0:1:length(y1n)-1]; ny2=[0:1:length(y3n)-1]; subplot(3,1,1); stem(ny1,y1n); subplot(3,1,2); stem(ny1,y2n); subplot(3,1,3); stem(ny2,y3n); axis[0,25,0,6];

仿真图像为:

圆周卷积题:计算两序列X1(n)={1,2,3,4,5},X2(n)={1,2,3,4,5,4,3,2,1}

的圆周卷积。

function y=circonv2(x1,x2,N)

%realize circular convolution use dft method if length(x1)>N

error('N must not be less than length of x1') end

if length(x2)>N

error('N must not be less than length of x2') end

X1k=fft(x1,N); X2k=fft(x2,N); Yk=X1k.*X2k; Y=ifft(Yk);

if(all(imag(x1)==0))&(all(imag(x2)==0)) y=real(Y); end

循环卷积和圆周卷积

循环卷积与圆周性卷积的实现一、实验目的(1)进一步理解并掌握循环卷积与线性卷积和圆周卷积和的概念。(2)理解掌握三者的关系。二、实验原理两个序列的N点循环卷积定义为?h(n)?x(n)?N??h(m)x((n?m))N(0?n?N)
推荐度:
点击下载文档文档为doc格式
9frmz29osl1qw0b8cvba7dd7d92wae01aqr
领取福利

微信扫码领取福利

微信扫码分享