📄 main.m
字号:
%实验1:信号、系统及系统响应
s = -1;
while(s<0)
clc;
s = input('选择实验步骤(默认1):\n[1]:时域采样序列分析\n[2]:系统和响应分析\n[3]:卷积定理验证\n[0]:退出\n选择:','s');
switch(s)
case{'1','2','3','0'}
s = str2num(s);
case {''}
s = 1;
otherwise
s = -1;
end
end
close all;
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);
i = 0;
while(s)
%时域采样序列分析
if(s==1)
l = 1;
k = 0;
while(l)
if(k==0)
A = input('A=','s');
A = str2num(A);
if isempty(A)
A = 444.128;
disp(['输入错误,使用默认值A=', num2str(A)]);
end
a = input('a=','s');
a = str2num(a);
if isempty(a)
a = 50 * sqrt(2) * pi;
disp(['输入错误,使用默认值a=50*sqrt(2)*pi=', num2str(a)]);
end
w = input('w=','s');
w = str2num(w);
if isempty(w)
w = 50 * sqrt(2) * pi;
disp(['输入错误,使用默认值w=50*sqrt(2)*pi', num2str(w)]);
end
end
k = k+1;
fs = input('输入采样频率\nfs=','s');
%fs=1000,300,200
fs = str2num(fs);
if isempty(fs)
fs = 1000;
disp('输入数据格式错误,使用默认值1000');
else
if(fs<1)
fs = 1000;
disp('输入无效数据,使用默认值1000');
end
end
Xa = mainseq(A,a,w,fs);
i = i + 1;
string = ['fs=', num2str(fs), 'Hz'];
figure(i)
DFT(Xa, 50, string);
l =input('是否继续(默认1)?\n[1]:继续实验1\n[0]:进行其它实验内容\n选择:','s');
switch(l)
case {'0','1'}
l = str2num(l);
otherwise
l = 1;
end
end
else
%系统和响应分析
if(s==2)
l = input('系统和响应分析,请选择时域信号类型(默认1):\n[1]:内容②a\n[2]:内容②b\n[3]:内容②b中xc(n)的长度改为5\n[0]:退出\n选择:','s');
switch(l)
case {'1','2','3','0'}
l = str2num(l);
otherwise
l = 1;
end
while(l)
if(l==1)
m = conv(Xb, Hb);
N = 5;
i = i + 1;
figure(i)
string = 'h_b(n)';
Hs = DFT(Hb, 4, string);
i = i + 1;
figure(i)
string = 'x_b(n)';
DFT(Xb, 2, string);
string = 'y(n)=x_b(n)*h_b(n)';
else
if(l==2)
m = conv(Ha, Ha);
N = 19;
string = 'y(n)=h_a(n)*h_a(n)';
else
if(l==3)
Xc = stepseq(1, 1, 5);
m = conv(Xc, Ha);
N = 14;
string = 'y(n)=x_c(n)*h_a(n)';
end
end
end
i = i + 1;
figure(i)
DFT(m, N, string);
l = input('请再选择信号类型(默认1):\n[1]:内容②a\n[2]:内容②b\n[3]:内容②b中xc(n)的长度改为5\n[0]:退出\n选择:','s');
switch(l)
case {'1','2','3','0'}
l = str2num(l);
otherwise
l = 1;
end
end
%卷积定理验证
else
if(s==3)
A = 1;
a = 0.4;
w = 2.0734;
fs = 1;
Xa1 = mainseq(A, a, 2, fs);
i = i + 1;
figure(i)
string = 'x_a_1(n)(A=1,a=0.4,T=1)';
[Xs, w] = DFT(Xa1, 50, string);
i = i + 1;
figure(i)
string = 'h_b(n)';
Hs = DFT(Hb, 4, string);
Ys = Xs .* Hs;
y = conv(Xa1, Hb);
N = 53;
i = i + 1;
figure(i)
string = 'y(n)=x_a(n)*h_b(n)';
[yy, w] = DFT(y, N, string);
i = i + 1;
figure(i)
subplot(2, 2, 1)
plot(w/pi, abs(yy));
axis([-2 2 0 2.5]);
xlabel('ω/π');
ylabel('|Y(jw)|');
title('FT[x_a(n)*h_b(n)]');
subplot(2, 2, 3)
plot(w/pi, abs(Ys));
axis([-2 2 0 2.5]);
xlabel('ω/π');
ylabel('|Y_s(jw)|');
title('FT[x_a(n)]·FT[h_b(n)]');
end
end
end
clc;
s = input('选择实验步骤(默认1):\n[1]:时域采样序列分析\n[2]:系统和响应分析\n[3]:卷积定理验证\n[0]:退出\n选择:','s');
switch(s)
case{'1','2','3','0'}
s = str2num(s);
otherwise
s = 1;
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -