matlab学习笔记4(控制系统仿真)

1、将5中的连续系统,以t=0.5 取样周期,采用双线性变换算法转换成离散系统,然后求出离散系统的单位阶跃响应、单位冲激响应及零输入响应,初始状态x0=[1  1  1−1]Tx_0 ={\left\lbrack 1\;1\;1-1\right\rbrack }^Tx0​=[111−1]T 。

clear
clc
a=[-1.6 -0.9 0 0;0.9 0 0 0;0.4 0.5 -5 -2.45;0 0 2.45 0];
b=[1,0,1,0]';
c=[1 1 1 1];
d=[0];
H=ss(a,b,c,d);
t=0.5;%采样周期
Gd=c2d(H,t,'tustin');%连续时间系统转化为离散时间系统
[ad,bd,cd,dd]=ssdata(Gd);
subplot(2,2,1);
dstep(ad,bd,cd,dd);
title('discrete step response');
subplot(2,2,2);
dimpulse(ad,bd,cd,dd);
title('discrete impulse response');
subplot(2,2,3);
x0=[1 1 1 -1]';
dinitial(ad,bd,cd,dd,x0);
axis([0 6 -0.5 2.5]);
title('discrete initial response');
subplot(2,2,4);
[z,p,k]=ss2zp(ad,bd,cd,dd,1);
zplane(z,p);
title('discrete ploe-zero map');

2、设开环传递函数H(s)=k(3s+1)s(2s+1)H(s)=\frac{k(3s+1)}{s(2s+1)}H(s)=s(2s+1)k(3s+1)​,绘制出通过单位负反馈构成的闭环系统的根轨迹.

clear
clc
num=[3,1];
den=[2,1,0];
rlocus(num,den);
sgrid
title('根轨迹');

3、设开环系统H(S)=k(S+5)S(S+2)(S+3)H\left(S\right)=\frac{k\left(S+5\right)}{S\left(S+2\right)\left(S+3\right)}H(S)=S(S+2)(S+3)k(S+5)​,绘制出闭环系统的根轨迹,并确定交点处的增益K。

clear
clc
num=[1 5];
den=[1 5 6 0];
rlocus(num,den);
sgrid
title('根轨迹');
[k,p]=rlocfind(num,den);

Select a point in the graphics window

selected_point = - 1.9896 - 0.09931

10、已知开环传递函数为H(S)=kS4+16S3+36S2+80SH\left(S\right)=\frac{k}{S^4 +{16S}^3 +36S^2 +80S}H(S)=S4+16S3+36S2+80Sk​,绘制处闭环系统根轨迹,并分析其稳定性。

clear
clc
num=[1];
den=[1 16 36 80 0];
rlocus(num,den);
title('根轨迹');

Select a point in the graphics window

select_point = 0.0152 + 3.13651

figure(2);
k1=55;
num1=k1*num;
den1=conv(den,den);
G1=tf(num1,den1);
[num_F1,den_F1]=feedback(G1,1,-1);%单位负反馈
G1_0=tf(num_F1,den_F1);
impulse(G1_0);
title('impulse response(k=55)');
figure(3);
k2=56;
num2=k2*num;
den2=conv(den,den);
G2=tf(num2,den2);
[num_F2,den_F2]=feedback(G2,1,-1);
G2_0=tf(num_F2,den_F2);
impulse(G2_0);
title('impulse response(k=56)');

更多推荐