实验三卷积
实验目的:
掌握线性卷积的计算机编程方法,利用卷积的方法观察、分析系统响应的时域特性;
验证卷积定理;
掌握圆周卷积的计算机编程方法,并比较与线性卷积的差别。利用圆周卷积的方法观察、分析系统响应的时域特性。
实验结果:
function y=circonv(x1,x2,N)
if length(x1)>N
error('N必须>=x1的长度')
end
if length(x2)>N
error('N必须>=x2的长度')
end
x1=[x1 zeros(1,N-length(x1))];
x2=[x1 zeros(1,N-length(x2))];
m=[0:1:N-1];
x2=x2(mod(-m,N)+1);
H=zeros(N,N);
for n=1:1:N
H(n,:)=cirshift(x2,n-1,N);
end
y=x1*H';
function y=cirshift(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);
M文件:
g1=[1 2 3 4 5];
g2=[2 2 0 1 1];
yl=conv(g1,g2);
y2=circonv(g1,g2,5);
n1=[0:1:length(yl)-1];
n2=[0:1:length(y2)-1];
subplot(2,1,1);
stem(n1,yl);
ylabel('线性卷积');
subplot(2,1,2);
stem(n2,y2);
ylabel('圆周卷积');
>>
M文件:
g1=[1 3 5 7 9 11 13 15 17];
g2=[1 -2 3 -2 1];
yl=conv(g1,g2);
y2=circonv(g1,g2,5);
n1=[0:1:length(yl)-1];
n2=[0:1:length(y2)-1];
subplot(2,1,1);
stem(n1,yl);
ylabel(‘线性卷积’);
subplot(2,1,2);
stem(n2,y2);
ylabel(‘圆周卷积’);
>>
??? Error using ==> circonv
N必须>=x1的长度
Error in ==> a at 4
y2=circonv(g1,g2,5);%用函数circonv计算N1点圆周卷积
分析:N必须大于等于x1的长度。在本程序中,N=5,x1=9,不满足函数的要求,故出现了错误。将N=9带入,便可以消除错误。
更改后的M文件:
g1=[1 3 5 7 9 11 13 15 17];
g2=[1 -2 3 -2 1];
yl=conv(g1,g2);
y2=circonv(g1,g2,9);
n1=[0:1:length(yl)-1];
n2=[0:1:length(y
实验三 卷积 来自淘豆网m.daumloan.com转载请标明出处.