?? zxb_shiyan_1.m
字號:
function lab1
goon=1;
xb=impseq(0,0,1);
ha=stepseq(1,1,10);
hb=impseq(0,0,3)+2.5*impseq(1,0,3)+2.5*impseq(2,0,3)+impseq(3,0,3);
while(goon==1)
step=input('請選擇你要進行的試驗的階段:\n 1(時域采樣序列分析),2(系統和響應分析),3(卷積定理的驗證),0(退出)\n');
while step<0&step>3
step=input('請選擇你要進行的試驗的階段:\n 1(時域采樣序列分析),2(系統和響應分析),3(卷積定理的驗證),0(退出)\n');
end
switch step
case 0,
goon=0;
case 1,
close all;
A=444.128;
a=222.128;
w=222.128;
fs=1000;
xa=signalline(A,a,w,fs);
str1='xa(n)';
str2='|Xa(ejw)|';
[Xa,l]=DFT(xa,str1,str2);
fs=500;
xa=signalline(A,a,w,fs);
[Xa,l]=DFT(xa,str1,str2);
fs=200;
xa=signalline(A,a,w,fs);
[Xa,l]=DFT(xa,str1,str2);
case 2,
close all;
str1='xb(n)';
str2='|Xb(ejw)|';
[Xb,l]=DFT(xb,str1,str2);
str1='hb(n)';
str2='|Hb(ejw)|';
[Hb,l]=DFT(hb,str1,str2);
y=conv(xb,hb);
str1='y(n)=xb(n)*hb(n)';
str2='|Y(ejw)|';
[Y,l]=DFT(y,str1,str2);
xc=ha;
y=conv(xc,ha);
str1='y(n)=ha(n)*ha(n)';
str2='|Y(ejw)|';
[Y,l]=DFT(y,str1,str2);
xc=stepseq(1,1,5);
y=conv(xc,ha);
str1='y(n)=ha(n)*xc(n)';
str2='|Y(ejw)|';
[Y,l]=DFT(y,str1,str2);
case 3,
close all;
A=1;
a=0.4;
w=2.0734;
fs=1;
xa=signalline(A,a,w,fs);
str1='xa(n)';
str2='|Xa(ejw)|';
[Xa,l]=DFT(xa,str1,str2);
y=conv(xa,hb);
str1='y(n)=xa(n)*ha(n)';
str2='|Y(ejw)|';
[Y,l]=DFT(y,str1,str2);
Hb=DFT(hb,'','');
close;
close;
Y=abs(Xa.*Hb);
figure;
plot(l/pi,Y);
xlabel('w/pi');
ylabel('|Y(ejw)|');
title('Y(ejw)=Hb(ejw)Xa(ejw)');
end
end
%------------子函數
function xa=signalline(A,a,w,fs)
%采樣信號產生程序,對連續信號進行采樣
n=0:49;
xa=A*exp((-a)*n/fs).*sin(w*n/fs);
function [x,n]=impseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)==0];
function [x,n]=stepseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)>=0];
function [c,l]=DFT(x,str1,str2)
N=length(x);
n=0:N-1;
k=-200:200;
l=(pi/100)*k;
c=x*(exp(-j*pi/100)).^(n'*k);
X=abs(c);
figure
stem(n,x);
xlabel('n');
ylabel(str1);
title('信號原形');
figure
plot(l/pi,X);
xlabel('w/pi');
ylabel(str2);
title('信號的傅氏變換');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -