如果

则

N

上式称为循环卷积或圆周卷积

注: 为 序列的周期化序列; 为 的主值序列。

上机编程计算时, 可表示如下:

(3) 两个有限长序列的线性卷积

序列 为 点长,序列 为 点长, 为这两个序列的线性卷积,则 为

且线性卷积 的最大长 ,也就是说当 和 时 。

(4) 循环卷积与线性卷积的关系

序列 为 点长,序列 为 点长,若序列 和

进行N点的循环卷积,其结果是否等于该两序列的线性卷积,完全取决于循环卷积的长度:

当 时循环(圆周)卷积等于线性卷积,即

N

当 时,循环卷积等于两个序列的线性卷积加上相当于下式的时间混叠,即

3、 实验内容及要求

已知两个有限长序列

(1) 实验前,预先笔算好这两个序列的线性卷积及下列几种情况的循环卷积 ⑤  ⑥

⑨

⑩

(2) 编制一个计算两个序列线性卷积的通用程序,计算 。

(3) 编制一个计算循环卷积的通用程序,计算上述4种情况下两个序列 与 的循环卷积。

(4) 上机调试并打印或记录实验结果。

注:可在一个程序中用菜单形式实现上述两种卷积的计算。

(5) 将实验结果与预先笔算的结果比较,验证其正确性。

4.实验程序

的定义

function yc=circonv(x1,x2,N)

%realize circular convolution use direct method

%y=circonv(x1,x2,N)

%y:output sequences

%x1,x2:input sequences

%N:circulation length

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

%以上语句判断两个序列的长度是否小于N

x1=[x1,zeros(1,N-length(x1))]; %填充序列x1(n)使其长度为N1+N2-1(序列%h(n)的长度为N1,序列x(n)的长度为N2)

x2=[x2,zeros(1,N-length(x2))]; %填充序列x2(n)使其长度为N1+N2-1

n=[0:1:N-1];

x2=x2(mod(-n,N)+1); %生成序列x2((-n))N

H=zeros(N,N);

for n=1:1:N

H(n,:)=cirshiftd(x2,n-1,N); %该矩阵的k行为x2((k-1-n))N

end

yc=x1*H';

的定义

function y=cirshiftd(x,m,N)

%directly realize circular shift for sequence x

%y=cirshiftd(x,m,N);

%x:input sequence whose length is less than N

%m:how much to shift

%N:circular length

%y:output shifted sequence

if length(x)>N

error('length of x must be less than N');

end

x=[x,zeros(1,N-length(x))];

n=[0:1:N-1];

y=x(mod(n-m,N)+1);

x=[1:5];

h=[1,2,1,2];

subplot(3,1,1);

stem(x);

subplot(3,1,2);

stem(h);

y=circonv(x,h,5);

subplot(3,1,3);

stem(y);

图形 ⑤

⑥

⑨

(6) ⑩

更多推荐