?? 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 + -