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