目录
1、实验目的:
2、实验内容:
a = [1 1 6]; b = [1]; %微分方程左右两端多项式的系数矩阵
time = 0:0.01:10; %时域范围[0 10]
sys = tf(b,a);
y1 = impulse(sys,time); %系统的冲激响应
y2 = step(sys,time); %系统的阶跃响应
subplot(1,2,1), plot(time,y1), xlabel('时间t'), title('冲激响应');
subplot(1,2,2), plot(time,y2), xlabel('时间t'), title('阶跃响应');
编写的卷积函数
function [t,x] = sss_conv(x1,x2,t1,t2,dt)
%文件名与函数名对应
%自写的卷积函数
x = conv(x1,x2)*dt;
t0 = t1(1) + t2(1);
L = length(x1) + length(x2)-2;
t = t0:dt:(t0+L*dt);
end
功能实现
dt = 0.01;
x1 = -1 : dt : 1;
f1t = 2*(heaviside(x1+1) - heaviside(x1-1));
% plot(x1,f1t);
x2 = -2 : dt : 2;
f2t = heaviside(x2+2) - heaviside(x2-2);
% plot(x2,f2t);
[t, f] = My_conv(f1t, f2t, x1, x2, dt); %调用卷积函数
plot(t, f);
axis([-4 4 -1 5]);
a = [1 4 4]; b = [1 3]; dt = 0.1; t = 0:dt:10; % 微分方程左侧系数向量a,微分方程右侧系数向量b
[r,p] = residue(b,a); % 用residue函数(参见12.1.2节)求出其特征根p1、p2和相应的留数r1、r2
h = r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t); %叠加各根分量
subplot(1,2,1), plot(t,h), title('冲激响应');
x = exp(-t); % t已经大于0了
y = conv(x,h)*dt; % 求x和h的卷积,长度为2*length(t)-1
subplot(1,2,2), plot(t,y(1:length(t))), title('零状态响应');
% (1)数值法
a = [1 0 2]; % 方程左端系数向量
n=length(a)-1; % 微分方程的阶数(即根的数量)
Y0 = [3 4]; % 初始条件向量
p=roots(a); % 求特征方程的根
V=rot90(vander(p)); % 生成范德蒙特矩阵
C= V\Y0'; % 求对应于各特征根的系数 左除
dt = 0.1; tf = 10; % 时域取值范围[0 10]
t = 0:dt:tf; % 时域取值范围[0 10]
y = zeros(1,length(t));
for k=1:n y = y + C(k)*exp(p(k)*t); end % 将各分量叠加,得到零输入响应的通式
subplot(121);
plot(t, y), xlabel('t'), ylabel('real(y)'); %零输入响应的实部随时间变化的趋势
title('数值法');
% 符号法
eq='D2y+2*y=0'; con='y(0)=3, Dy(0)=4';
y = dsolve(eq, con); y=simplify(y);
subplot(122);
ezplot(y, t); %一定要加参数t,限制时间的范围,保证波形正确
axis([0 10 -5 5]); % 限制xy轴范围
title('符号法');
clear
b = [1]; a = [1 0 1];
t = 0:0.1:10; x = cos(t);
sys1 = tf(b,a); %系统函数模型
y1 = lsim(sys1,x,t); %零状态响应
% subplot(1,2,1),plot(t,y1);
xlabel('时间');title('零状态响应');
[A B C D] = tf2ss(b,a); %系统函数模型转化成状态空间模型参数
sys2 = ss(A,B,C,D) ;zi = [-1 0]; %产生状态空间模型和初始状态矩阵
y2 = lsim(sys2,x,t,zi); %全响应
% subplot(1,2,2);
plot(t,y2);
xlabel('时间t');title('全响应');