📄 cir_conv.m
字号:
% 本程序用来计算并演示两个长度均为N的序列之间的循环卷积。
% 程序名:Cir_conv.m
clear;
N=input('Type in the length N=:');
a=[1 2 0 1];b=[2 2 1 1];
n0=-3*N;
n1=3*N-1;
n=n0:n1;
p=input('请选择输入的序列形式:1—闭式形式,2—开式形式');
if p==1,
x=input('请输入第一个序列的闭式表示式:');
h=input('请输入第二个序列的闭式表示式:');
else
x=input('请输入第一个序列的开式表示式:');
h=input('请输入第二个序列的开式表示式:');
end
c=0*n;
RN=u(n)-u(n-N);
if p==1
x=x([3*N+1:4*N]);
h=h([3*N+1:4*N]);
else
end
l=length(n);
v=zeros(1,N);
x=[v,v,v,x,v,v];
hs=[h,h,h,h,h,h];
d=ones(1,length(n));
subplot(411)
stem(n,x,'.');axis([-N,2*N-1,0,max(x)]);title('序列g(n)')
subplot(412)
stem(n,hs,'.');axis([-N,2*N-1,0,max(hs)]);text(-N+.51,0.8*max(hs),'h(n)的周期延拓序列');
s=0;
hs=fliplr(hs);
for i=0:N-1;
for j=0:N;
for p=1:l-1;
if s==0;
w=hs(l);hs(l-p+1)=hs(l-p);
end
hs(1)=w;
end
end
s=1;
subplot(413)
stem(n,hs.*RN,'r.');axis([-N,2*N-1,0,max(hs)]);text(-N+.51,0.8*max(hs),'h(n)的循环反褶与移位');
a=x.*RN;
b=hs.*RN;
e=a.*b;
g=e*d';
c(i+3*N+1)=g;
subplot(414)
stem(n,c,'.')
axis([-N,2*N-1,0,max(c)]);text(-N+.51,0.8*max(c),'循环卷积y(n)');
pause
for p=1:l-1;
w=hs(l);hs(l-p+1)=hs(l-p);
end
hs(1)=w;
end
disp('循环卷积的样本值:')
yn=c([3*N+1:4*N])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -