【4.2】 程序:
num=[5,0];den=conv([1,1],conv([1,2],[1,3])); [numc,denc]=cloop(num,den); [z,p,k]=tf2zp(numc,denc); [A,B,C,D]=tf2ss(numc,denc); g_zp=zpk(z,p,k) g_tf=tf(numc,denc) g_ss=ss(A,B,C,D) 运行结果: Zero/pole/gain: 5 s ---------------------------------- (s+0.4432) (s^2 + 5.557s + 13.54)
Transfer function: 5 s ---------------------- s^3 + 6 s^2 + 16 s + 6 a =
x1 x2 x3 x1 -6 -16 -6 x2 1 0 0 x3 0 1 0 b = u1
x1 1 x2 0 x3 0 c =
x1 x2 x3 y1 0 5 0 d = u1 y1 0
【4.3】程序:
A=[0 0 0 -1;1 0 0 -2;0 1 0 -3;0 0 1 -4]; B=[0;0;0;1]; C=[1 0 0 0]; g_ss=ss(A,B,C,D) [num,den]=ss2tf(A,B,C,D); g_tf=tf(num,den) [z,p,k]=ss2zp(A,B,C,D); g_zpk=zpk(z,p,k) 运行结果: a =
x1 x2 x3 x4 x1 0 0 0 -1 x2 1 0 0 -2 x3 0 1 0 -3 x4 0 0 1 -4
b = u1 x1 0 x2 0 x3 0 x4 1 c =
x1 x2 x3 x4 y1 1 0 0 0 d = u1 y1 0
Continuous-time model.
Transfer function:
-3.109e-015 s^3 - s^2 - 3.331e-015 s - 4.441e-016 ------------------------------------------------- s^4 + 4 s^3 + 3 s^2 + 2 s + 1
Zero/pole/gain:
- s^2 ----------------------------------------------
(s+0.6724) (s+3.234) (s^2 + 0.0936s + 0.4599)
【5.1】 (1) 程序 num=[0,10];
den=conv([1,0],[1,7,17]); [numc,denc]=cloop(num,den,-1); G=tf(numc,denc) [y,t]=step(G); plot(t,y,'b-') C=dcgain(G); n=1;
while y(n)<0.1*C n=n+1; end m=1;
while y(m)<0.9*C m=m+1; end
risetime=t(m)-t(n) [Y,k]=max(y);
percentovershoot=100*(Y-C)/C i=length(t);
while(y(i)>0.98*C)&(y(i)<1.02*C) i=i-1; end
settlingtime=t(i) 运行结果: Transfer function: 10 ----------------------- s^3 + 7 s^2 + 17 s + 10
risetime =
2.7312
percentovershoot =
-0.4399
settlingtime =
5.1372 图
1000000000
00
1
2
3
4
5
67
:
(2) 程序 k=[10,100,1000]; t=linspace(1,20,200); num=1;
den=conv([1,0],[1,7,17]); for j=1:3;
s1=tf(num*k(j),den); sys=feedback(s1,1) y(:,j)=step(sys,t); end
plot(t,y(:,1),'r',t,y(:,2),'b',t,y(:,3),'g') gtext('k=10');gtext('k=100');gtext('k=1000') 运行结果: Transfer function: 10 ----------------------- s^3 + 7 s^2 + 17 s + 10
Transfer function: 100 ------------------------ s^3 + 7 s^2 + 17 s + 100
Transfer function: 1000 ------------------------- s^3 + 7 s^2 + 17 s + 1000
图:
1.81.6
1.41.210.80.60.40.2
02468101214161820
图:
4
22
3
2
1
-1
-2
-3
02468101214161820
【6.1】程序: (1) num1=[1,1];
den1=conv([1,0,0],conv([1,2],[1,4])); sys1=tf(num1,den1) rlocus(sys1) 运行结果:
Root Locus
8
6
4
2
Imaginary Axis
-2
-4
-6
-8-12
-10-8-6-4Real Axis
-2024
(2) num2=[1,1];
den2=conv([1,0],conv([1,-1],[1,4,16])); sys2=tf(num2,den2) rlocus(sys2) 运行结果:
Root Locus
8
6
4
2
Imaginary Axis
-2
-4
-6
-8-10
-8-6-4
Real Axis
-2024
(3) num3=[1,8];
den3=conv([1,0,0],conv([1,3],conv([1,5],conv([1,7],[1,15])))); sys3=tf(num3,den3) rlocus(sys3) 运行结果:
Root Locus
20
15
10
5
Imaginary Axis
-5
-10
-15
-20-30
-25-20-15-10-5051015
Real Axis
【6.3】 程序: num=[1,2];
den=conv([1,0],conv([1,4],conv([1,8],[1,2,5]))); sys=tf(num,den) rlocus(sys)
[k,poles]=rlocfind(sys) 运行结果:
Transfer function: s + 2 --------------------------------------- s^5 + 14 s^4 + 61 s^3 + 124 s^2 + 160 s
Select a point in the graphics window
selected_point =
0.0296 + 2.2826i k =
135.8815 poles =
-7.3248 -5.4104 0.0145 + 2.3021i 0.0145 - 2.3021i -1.2939 图:
Root Locus
15
10
5
Imaginary Axis
-5
-10
-15-20
-15-10-5
Real Axis
051015
【7.3】
程序(1)画波特图 num=[50];
den=conv([1,0],conv([1,10],[3,1])); sys=tf(num,den) sys1=feedback(sys,1) bode(sys) grid 图(1)
Bode Diagram
10050
Magnitude (dB
)Phase (deg)
0-50-100-150-90-135
-180-225-270
10
-2
10
-1
10
10
1
10
2
10
3
Frequency (rad/sec)
程序(2) 画奈奎斯特图 num=[50];
den=conv([1,0],conv([1,10],[3,1])); sys=tf(num,den) sys1=feedback(sys,1) nyquist(sys) grid 图(2)
Nyquist Diagram
300
200
100
Imaginary Axis
-100
-200