控制系统的Matlab仿真与设计课后答案_matlab控制系统与仿真
控制系统的Matlab仿真与设计课后答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“matlab控制系统与仿真”。
MATLAB课后习题答案 2.1 x=[15 22 33 94 85 77 60] x(6)x([1 3 5])x(4:end)x(find(x>70))2.3 A=zeros(2,5);
A(:)=-4:5
L=abs(A)>3 islogical(L)
X=A(L)2.4 A=[4,15,-45,10,6;56,0,17,-45,0] find(A>=10&A
';cr='余多项式为
';disp([cq,poly2str(q,'s')]),disp([cr,poly2str(r,'s')])2.6 A=[11 12 13;14 15 16;17 18 19];PA=poly(A)
PPA=poly2str(PA,'s')3.1 n=(-10:10)';y=abs(n);plot(n,y,'r.','MarkerSize',20)axis equal grid on xlabel('n')3.2 x=0:pi/100:2*pi;y=2*exp(-0.5*x).*sin(2*pi*x);plot(x,y),grid on;3.3 t=0:pi/50:2*pi;x=8*cos(t);y=4*sqrt(2)*sin(t);z=-4*sqrt(2)*sin(t);plot3(x,y,z,'p');
title('Line in 3-D Space');text(0,0,0,'origin');
xlabel('X'),ylable('Y'),zlable('Z');grid;3.4
theta=0:0.01:2*pi;
rho=sin(2*theta).*cos(2*theta);polar(theta,rho,'k');3.5
[x,y,z]=sphere(20);z1=z;
z1(:,1:4)=NaN;c1=ones(size(z1));surf(3*x,3*y,3*z1,c1);hold on z2=z;
c2=2*ones(size(z2));
c2(:,1:4)=3*ones(size(c2(:,1:4)));surf(1.5*x,1.5*y,1.5*z2,c2);colormap([0,1,0;0.5,0,0;1,0,0]);grid on hold off 第四章
function f=factor(n)if n
f=factor(n-1)*n;end
function[s,p]=fcircle(r)s=pi*r*r;p=2*pi*r;
function k=jcsum1(n)k=0;i=0;while i
function k=jcsum(n)k=0;
for i=0:n k=k+2^i;end
4.1for m=100:999
m1=fix(m/100);m2=rem(fix(m/10),10);m3=rem(m,10);
if
m==m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m)
end end
4.2[s,p]=fcircle(10)4.3y=0;n=100;for i=1:n
y=y+1/i/i;end y
4.4s=0;for i=1:5
s=s+factor(i);end s
4.5sum=0;i=1;while sum
4.6jcsum(63)jcsum1(63)4.1 for m=100:999
m1=fix(m/100);
m2=rem(fix(m/10),10);
m3=rem(m,10);
if m==m1*m1*m1+m2*m2*m2+m3*m3*m3
disp(m)
end end 4.3 y=0;n=100;
for i=1:n
y=y+1/i/i;end y 4.4 s=0;for i=1:5
s=s+factor(i);end s 4.5
sum=0;i=1;
while sum
sum=sum+i;
i=i+1;end;n=i-2 4.6
i=0;k=0;while i
k=k+2^i;
i=i+1;end k i
i=0;k=0;for i=0:63
k=k+2^i;end i k
第五章
function f=fxyz(u)x=u(1);y=u(2);z=u(3);f=x+y.^2./x/4+z.^2./y+2./z;
5.1A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
b=[13,-9,6,0]';x=Ab
5.2[U,fmin]=fminsearch('fxyz',[0.5,0.5,0.5])
5.3X=linspace(0,2*pi,50);Y=sin(X);
P=polyfit(X,Y,3)AX=linspace(0,2*pi,50);Y=sin(X);Y1=polyval(P,X)
plot(X,Y,':O',X,Y1,'-*')
5.4x=0:2.5:10;h=[0:30:60]';
T=[95,14,0,0,0;88,48,32,12,6;67,64,54,48,41];xi=[0:0.5:10];hi=[0:10:60]';
temps=interp2(x,h,T,xi,hi,'cubic');
mesh(xi,hi,temps);
5.1 A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';x=Ab 5.3 X=linspace(0,2*pi,50);Y=sin(X);P=polyfit(X,Y,3)AX=linspace(0,2*pi,50);Y=sin(X);Y1=polyval(P,X)plot(X,Y,':O',X,Y1,'-*')6.1syms x
y=finverse(1/tan(x))6.2syms x y
f=1/(1+x^2);g=sin(y);fg=compose(f,g)6.3syms x
g=(exp(x)+x*sin(x))^(1/2);dg=diff(g)
6.4F=int(int('x*exp(-x*y)','x'),'y')
6.5syms x
F=ztrans(x*exp(-x*10))6.6a=[0 1;-2-3];syms s
inv(s*eye(2)-a);
6.7 f=solve('a*x^2+b*x+c')6.8 f=solve('x+y+z=1','x-y+z=2','2*x-y-z=1')
6.9y=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=0')ezplot(y),grid on
6.10a=maple('simplify(sin(x)^2+cos(x)^2);')
6.11f=maple('laplace(exp(-3*t)*sin(t),t,s);')6.12 syms t x
F=sin(x*t+2*t);L=laplace(F)第七章
function
[sys,x0,str,ts]=ww(t,x,u,flag)%¶¨ÒåÁ¬ÐøÏµÍ³µÄSº¯Êý A=[0,1;-0.4,-0.2];B=[0;0.2];C=[1,0];D=0;
switch flag, case 0,[sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D);case 1,sys=mdlDerivatives(t,x,u,A,B,C,D);case 2,sys=mdlUpdate(t,x,u);case 3,sys=mdlOutputs(t,x,u,A,B,C,D);case 4,sys=mdlGetTimeOfNextVarHit(t,x,u);case 9,sys=mdlTerminate(t,x,u);otherwise
error(['Unhandled flag = ',num2str(flag)]);end
%=============================== function
[sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D)sizes = simsizes;sizes.NumContStates = 2;sizes.NumDiscStates = 0;sizes.NumOutputs = 1;sizes.NumInputs = 1;sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 1;sys = simsizes(sizes);x0 = [0;0];str = [];ts = [0 0];
%=============================== function
sys=mdlDerivatives(t,x,u,A,B,C,D)
sys = A*x+B*u;
%===============================
function sys=mdlUpdate(t,x,u)sys = [];
%=============================== function
sys=mdlOutputs(t,x,u,A,B,C,D)sys = C*x+D*u;
%=============================== function
sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1;sys = t + sampleTime;
%===============================
function sys=mdlTerminate(t,x,u)sys = [];
7.1
7.2
7.3
7.4
7.5
7.6
7.7
第八章
8.1num=[5];den=[1,2,2];sys=tf(num,den)8.1.2s = tf('s');
H = [5/(s^2+2*s+2)];H.inputdelay =2
8.1.3h=tf([0.5,0],[1,-0.5,0.5],0.1)
8.2num=2*[1,0.5];den=[1,0.2,1.01];
sys=tf(num,den)
[z,p,k]=tf2zp(num,den);zpk(z,p,k)
[A,B,C,D]=tf2(num,den);(A,B,C,D)
8.3 num=[1,5];den=[1,6,5,1];ts=0.1;
sysc=tf(num,den);sysd=c2d(sysc,ts,'tustin')8.4.0
8.4.1 %¶Ôϵͳ·½¿òͼÿ¸ö»·½Ú½øÐбàºÅ,ÓÐ8¸öͨµÀ,ÁÐдÿ¸öͨµÀ´«µÝº¯Êý r1=1;r2=2;c1=3;c2=4;G1=r1;G2=tf(1,[c1,0]);
G3=1;%ÊÇ·ÖÀëµãºÍ»ãºÏµãµÄÁ¬Ïß,²»Äܺϲ¢,´«º¯Îª1 G4=-1;G5=1/r2;
G6=tf(1,[c2,0]);G7=-1;G8=-1;%½¨Á¢ÎÞÁ¬½ÓµÄ״̬¿Õ¼äÄ£ÐÍ G=append(G1,G2,G3,G4,G5,G6,G7,G8)
%д³öϵͳµÄÁ¬½Ó¾ØÕó
Q=[1 4 0 %ͨµÀ1µÄÊäÈëÊÇͨµÀ4 2 1 7 %ͨµÀ2µÄÊäÈëÊÇͨµÀ1,7 3 2 02 0 5 3 8 6 5 0 7 5 06 0];%¸ººÅÔÚ´«º¯ÖÐÌåÏÖ %ÁгöϵͳµÄ×ܵÄÊäÈëºÍÊä³ö¶ËµÄ±àºÅ
inputs=1;outputs=6;
%Éú³É×éºÏºóϵͳµÄ״̬¿Õ¼äÄ£ÐÍ sys=connect(G,Q,inputs,outputs)
8.4.2r1=1;r2=2;c1=3;c2=4;[A,B,C,D]=linmod('x84');[num,den]=2tf(A,B,C,D);sys=tf(num,den)
8.5A=[1,1,0;0,1,0;0,0,2];B=[0,0;1,0;0,-2];n=size(A)
Tc=ctrb(A,B);if n==rank(Tc)
disp('ϵͳÍêÈ«ÄÜ¿Ø');else
disp('ϵͳ²»ÍêÈ«ÄÜ¿Ø');end 第九章
function [rtab,info]=routh(den)info=[];
vec1=den(1:2:length(den));
nrT=length(vec1);
vec2=den(2:2:length(den)-1);rtab=[vec1;vec2,zeros(1,nrT-length(vec2))];for k=1:length(den)-2, alpha(k)=vec1(1)/vec2(1);
for i=1:length(vec2),a3(i)=rtab(k,i+1)-alpha(k)*rtab(k+1,i+1);
end
if sum(abs(a3))==0 a3=polyder(vec2);
info=[info,'All elements in row ',...int2str(k+2)' are zeros;'];
elseif abs(a3(1))
info=[info,'Replaced first element;'];
end
rtab=[rtab;a3, zeros(1,nrT-length(a3))];vec1=vec2;vec2=a3;end
9.1num=[2,5,1];den=[1,2,3];bode(num,den);grid on;figure;
nyquist(num,den);
9.2num=5*[1,5,6];den=[1,6,10,8];step(num,den);grid on;figure;
impulse(num,den);grid on;9.3kosi=0.7;wn=6;
num=wn^2;den=[1,2*kosi*wn,wn^2];step(num,den);grid on;figure;
impulse(num,den);grid on;9.4den=[1,2,8,12,20,16,16];[rtab,info]=routh(den)a=rtab(:,1)
if all(a>0)
disp('ϵͳÊÇÎȶ¨µÄ');
else
disp('ϵͳÊDz»Îȶ¨µÄ');
end
9.5num=7*[1,5];den=conv([1,0,0],conv([1,10],[1,1]));
[gm,pm,wg,wc]=margin(num,den)
9.1 >> sys=tf([2,5,1],[1,2,3])Transfer function: 2 s^2 + 5 s + 1---------------s^2 + 2 s + 3
>> rlocus(sys)>> nyquist(sys)>> bode(sys)9.2
>> G=tf(conv([5],[1,5,6]),[1,6,10,8]);>> step(G)>> impulse(G)
sys=tf([5,25,30],[1,6,10,8]);>> step(sys)>> impulse(sys)9.4>>
GH=tf(conv([7],[1,5]),conv([1,0,0],conv([1,10],[1,1])));
>> [Gm,Pm,Wcg,Wcp]=margin(GH)Gm =
0 Pm =
-47.2870 Wcg =
0 Wcp = 1.4354 >>
GH=tf(conv([7],[1,5]),conv([1,0,0],conv([1,10],[1,1])));
>> [Gm,Pm,Wcg,Wcp]=margin(GH)GH_close=feedback(GH,1)step(GH_close),grid on Gm =
0 Pm =
-47.2870 Wcg =
0 Wcp =
1.4354 第十章
function s=bpts2s(bp,ts,delta)kosi=sqrt(1-1./(1+((1./pi).*log(1./bp)).^2));
wn=-log(delta.*sqrt(1-kosi.^2))/(kosi.*ts);
s=-kosi.*wn+j.*wn.*sqrt(1-kosi.^2);
function
[ngc,dgc]=fa_lead(ng0,dg0,Pm,wc,w)
ngv=polyval(ng0,j*wc);dgv=polyval(dg0,j*wc);g=ngv/dgv;
thetag=angle(g);mg=abs(g);thetar=Pm*pi/180;
tz=(1+mg*cos(thetar-thetag))/(-wc*mg*sin(thetar-thetag));tp=(cos(thetar-thetag)+mg)/(wc*sin(thetar-thetag));ngc=[tz,1];dgc=[tp,1];
function
[ngc,dgc]=fg_lag_pm(ng0,dg0,w,Pm)
[mu,pu]=bode(ng0,dg0,w);wgc=spline(pu,w,Pm+5-180);%²åÖµÇóÈ¡Âú×ãÏà½ÇÔ£¶ÈµÄ½ÇƵÂÊ×÷ΪÆÚÍûµÄ¼ôÇÐÆµÂÊ
ngv=polyval(ng0,j*wgc);dgv=polyval(dg0,j*wgc);g=ngv/dgv;
alph=abs(1/g);T=10/alph*wgc, ngc=[alph*T,1];dgc=[T,1];
function
[ngc,dgc]=fg_lag_wc(ng0,dg0,w,wc)
ngv=polyval(ng0,j*wc);dgv=polyval(dg0,j*wc);g=ngv/dgv;
alph=abs(1/g);T=10/(alph*wc);ngc=[alph*T,1];dgc=[T,1];
function
[ngc,dgc]=fg_lead_pd(ng0,dg0,wc)ngv=polyval(ng0,j*wc);dgv=polyval(dg0,j*wc);g=ngv/dgv;mg0=abs(g);
t=sqrt(((1/mg0)^2-1)/(wc^2));%·ùÖµÏà¼ÓΪÁã
ngc=[t,1];dgc=[1];%Gc(s)=1+Ts
function
[ngc,dgc]=fg_lead_pm(ng0,dg0,Pm,w)
[mu,pu]=bode(ng0,dg0,w);%¼ÆËãÔ-ϵͳµÄ¶ÔÊýƵÂÊÏìÓ¦Êý¾Ý
[gm,pm,wcg,wcp]=margin(mu,pu,w);%ÇóÈ¡Ô-ϵͳµÄÏà½ÇÔ£¶ÈºÍ¼ôÇÐÆµÂÊ
alf=ceil(Pm-pm+5);%¼ÆËã¿ØÖÆÆ÷ÌṩµÄ×î´ó³¬Ç°½Ç¶È£¬
phi=(alf)*pi/180;%½«×î´ó³¬Ç°½Çת»»Îª»¡¶Èµ¥Î» a=(1+sin(phi))/(1-sin(phi));%¼ÆËãaÖµ
dbmu=20*log10(mu);%ϵͳµÄ¶ÔÊý·ùÖµ
mm=-10*log10(a);%wm´¦µÄ¿ØÖÆÆ÷¶ÔÊý·ùÖµ wgc=spline(dbmu,w,mm);%²îÖµÇóÈ¡wm£¬ÈÏΪwm£½wc T=1/(wgc*sqrt(a));%¼ÆËãT
ngc=[a*T,1];dgc=[T,1];
function
[ngc,dgc]=fg_lead_pm_wc(ng0,dg0,Pm,wc,w)
[mu,pu]=bode(ng0,dg0,w);ngv=polyval(ng0,j*wc);dgv=polyval(dg0,j*wc);
g=ngv/dgv;%ÇóÔ-ϵͳÔÚÆÚÍûµÄ¼ôÇÐÆµÂÊ´¦µÄƵÂÊÏìÓ¦Êý¾ÝG0(jwc)
theta=180*angle(g)/pi;%Ô-ϵͳÔÚÆÚÍûµÄ¼ôÇÐÆµÂÊ´¦µÄÏà½ÇÔ£¶È£¬µ¥Î»Îª¶È
alf=ceil(Pm-(theta+180)+5);%
×î´ó³¬Ç°½Ç phi=(alf)*pi/180;
a=(1+sin(phi))/(1-sin(phi));dbmu=20*log10(mu);mm=-10*log10(a);wgc=spline(dbmu,w,mm);T=1/(wgc*sqrt(a));
KK=128;s1=-2+i*2*sqrt(3);a=2 ng0=[10];dg0=conv([1,0],conv([1,2],[1,8]));g0=tf(ng0,dg0);
[ngc,dgc,k]=rg_lag(ng0,dg0,KK,s1,a);
gc=tf(ngc,dgc)function s=kw2s(kosi,wn)s=-kosi.*wn+j*wn.*sqrt(1-kosi.^2);
10.1ng0=[1];dg0=10000*[1 0-1.1772];
g0=tf(ng0,dg0);%Âú×㿪»·ÔöÒæµÄΪУÕýϵͳµÄ´«µÝº¯Êý
s=kw2s(0.7,0.5)%ÆÚÍûµÄ±Õ»·Ö÷µ¼¼«µã
ngc=rg_lead(ng0,dg0,s);gc=tf(ngc,1)g0c=tf(g0*gc);rlocus(g0,g0c);
b1=feedback(g0,1);%δУÕýϵͳµÄ±Õ»·´«µÝº¯Êý
b2=feedback(g0c,1);%УÕýºóϵͳµÄ±Õ»·´«µÝº¯Êý
figure,step(b1,'r--',b2,'b');grid on %»æÖÆÐ£ÕýǰºóϵͳµÄµ¥Î»½×Ô¾
KK=20;s1=-2+i*sqrt(6);a=1 ng0=[10];dg0=conv([1,0],[1,4]);g0=tf(ng0,dg0);
[ngc,dgc,k]=rg_lag(ng0,dg0,KK,s1,a);gc=tf(ngc,dgc)g0c=tf(KK*g0*gc);
b1=feedback(k*g0,1);b2=feedback(g0c,1);step(b1,'r--',b2,'b');grid on
g0c=tf(KK*g0*gc);rlocus(g0,g0c);
b1=feedback(k*g0,1);
b2=feedback(g0c,1);figure,step(b1,'r--',b2,'b');grid on
ng0=[1];dg0=conv([1,0,0],[1,5]);g0=tf(ng0,dg0);w=logspace(-3,3);KK=1;Pm=50;
[ngc,dgc]=lead4(ng0,dg0,KK,Pm,w);
gc=tf(ngc,dgc);g0c=tf(KK*g0*gc);bode(KK*g0,w);hold
on,bode(g0c,w);grid on,hold off [gm,pm,wcg,wcp]=margin(g0c)Kg=20*log10(gm)g1=feedback(g0c,1);bode(g1),grid on, [mag,phase,w]=bode(g1);a=find(mag
b=find(mag==max(mag))wr=w(b)
KK=40;Pm=50;ng0= KK *[1];
dg0=conv([1,0],conv([1,1],[1,4]));
g0=tf(ng0,dg0);
w=logspace(-2,4);
[ngc,dgc]=fg_lead_pm(ng0,dg0,Pm, w)gc=tf(ngc,dgc),g0c=tf(g0*gc);
b1=feedback(g0,1);b2=feedback(g0c,1);
step(b1,'r--', b2,'b');grid on figure, bode(g0,'r--',g0c,'b',w), grid on,[gm,pm,wcg,wcp]=margin(g0c), Km=20*log10(gm)
KK=200;bp=0.3;ts=0.7;delta=0.05;
ng0=[1];dg0=conv([1,0],conv([0.1,1],conv([0.02 1],conv([0.01,1],[0.005 1]))));g0=tf(ng0,dg0);
w=logspace(-4,3);t=[0:0.1:3];[mag,phase]=bode(KK*g0,w);[gm0,pm0,wg0,wc0]=margin(mag,phase,w),gm0=20*log10(gm0)%gm0 =-15.6769
%2¡¢È·¶¨ÆÚÍûµÄ¿ª»·´«µÝº¯Êý mr=0.6+2.5*bp;
wc=ceil((2+1.5*(mr-1)+2.5*(mr-1)^2)*pi/ts), h=(mr+1)/(mr-1)w1=2*wc/(h+1), w2=h*w1 w1=wc/10;w2=25;ng1=[1/w1,1];dg1=conv([1/w2,1],conv([1,0],[1,0]));
g1=tf(ng1,dg1);
g=polyval(ng1,j*wc)/polyval(dg1,j*wc);K=abs(1/g);%¼ôÇÐÆµÂÊ´¦·ùֵΪ1£¬ÇóKÖµ g1=tf(K*g1)
%3¡¢È·¶¨·´À¡»·½Ú´«µÝº¯Êý h=tf(dg1,ng1);Kh=1/K;h=tf(Kh*h)%ÆÚÍûƵÂÊÌØÐԵĵ¹ÌØÐÔ
%4¡¢ÑéËãÐÔÄÜÖ¸±ê
g2=feedback(KK*g0,h);%УÕýºó£¬ÏµÍ³µÄ¿ª»·´«µÝº¯Êý b1=feedback(KK*g0,1);b2=feedback(g2,1);
bode(KK*g0,'r--',g2,'b',h,'g',w);grid on
figure,step(b1, 'r--',b2, 'b',t);grid on,[pos,tr,ts,tp]=stepchar(b2,delta)
function
[ngc,dgc]=lag2(ng0,dg0,w,KK,Pm)[mu,pu]=bode(KK*ng0,dg0,w);wgc=spline(pu,w,Pm+5-180), ngv=polyval(KK*ng0,j*wgc);dgv=polyval(dg0,j*wgc);g=ngv/dgv;
alph=abs(1/g), T=10/alph*wgc, ngc=[alph*T,1];dgc=[T,1];
function
[ngc,dgc]=lead4(ng0,dg0,KK,Pm,w)[mu,pu]=bode(KK*ng0,dg0,w);[gm,pm,wcg,wcp]=margin(mu,pu,w);alf=ceil(Pm-pm+5);phi=(alf)*pi/180;
a=(1+sin(phi))/(1-sin(phi)), dbmu=20*log10(mu);mm=-10*log10(a);
wgc=spline(dbmu,w,mm), T=1/(wgc*sqrt(a)),ngc=[a*T,1];dgc=[T,1];
function
[ngc,dgc]=ra_lead(ng0,dg0,s1)ngv=polyval(ng0,s1);dgv=polyval(dg0,s1);g=ngv/dgv;thetag=angle(g);mg=abs(g);thetas=angle(s1);ms=abs(s1);
tz=(sin(thetas)-mg*sin(thetag-thetas))/(mg*ms*sin(thetag));tp=-(mg*sin(thetas)+sin(thetag+thetas))/(ms*sin(thetag));ngc=[tz,1];dgc=[tp,1];
function
[ngc,dgc,k]=rg_lag(ng0,dg0,KK,s1,a)
ngv=polyval(ng0,s1);dgv=polyval(dg0,s1);g=dgv/ngv;
k=abs(g);%ÆÚÍûÖ÷µ¼¼«µã´¦µÄ¸ù¹ì¼£ÔöÒæ beta=k/KK;
[kosi1,wn1]=s2kw(s1);
zc=-wn1*sin(a*pi/180)/sin(pi-atan(sqrt(1-kosi1^2)/kosi1)-(a*pi/180));%ÀûÓÃÕýÏÒ¶¨Àí pc=beta*zc;
ngc=beta*[1,-zc];dgc=[1,-pc];
function
varargout=rg_lead(ng0,dg0,s1)if nargout==1
ngv=polyval(ng0,s1);dgv=polyval(dg0,s1);g=ngv/dgv;
thetal=pi-angle(g);
zc=real(s1)-imag(s1)/tan(thetal);
t=-1/zc;
varargout{1}=[t,1];elseif nargout==2 ngv=polyval(ng0,s1);dgv=polyval(dg0,s1);
g=ngv/dgv;theta=angle(g);phi=angle(s1);
if theta>0 phi_c=pi-theta;
end
if theta
end
theta_z=(phi+phi_c)/2;theta_p=(phi-phi_c)/2;
z_c=real(s1)-imag(s1)/tan(theta_z);
p_c=real(s1)-imag(s1)/tan(theta_p);
nk=[1-z_c];varargout{2}=[1-p_c];kc=abs(p_c/z_c);
if theta
end
varargout{1}=kc*nk;else
error('Êä³ö±äÁ¿ÊýÄ¿²»ÕýÈ·£¡');end
function [bp,ts]=s2bpts(s,delta)[kosi,wn]=s2kw(s);
bp=exp(-kosi.*pi./sqrt(1-kosi.^2));
ts=-1./(kosi.*wn)*log(delta.*sqrt(1-kosi.^2));
function [kosi,wn]=s2kw(s)kosi=1./sqrt(1+(imag(s)/real(s)).^2);
wn=-real(s)./kosi;
%Èç¹ûwnΪ¸ºÖµ£¬ÔòwnÈ¡Õý£¬²¢ÇÒkosiÈ¡·´ iwn=(wn
function
[pos,tr,ts,tp]=stepchar(g0,delta)
[y,t]=step(g0);[mp,ind]=max(y);dimt=length(t);y=y(dimt);
pos=100*(mp-y)/y;tp=t(ind);for i=1:dimt
if y(i)>=1 tr=t(i);
break;
end end;
for i=1:length(y)
if
y(i)=(1+delta)*y ts=t(i);
end end
第十一章
11.1a=[0 1 0;0 0 1;-1-5-6];b=[0 0 1]';
p=[-2+4j;-2-4j;-10];K=acker(a,b,p)eig(a-b*K)
11.2a=[0 1 0;0 0 1;-6-11-6];b=[1,0,0]';
p=[-2+2*sqrt(3)*j;-2-2*sqrt(3)*j;-10];
K=acker(a,b,p)eig(a-b*K)
11.6A=[-1 0 0;0-2-3;0 0-3];B=[1 0;2 3;-3-3];C=[1 0 0;1 1 1 ];
[G,K,L]=decoupling(A,B,C)
11.8A=[0 20.6;1 0];b=[0 1]';c=[0 1];d=0;
G=(A,b,c,d);
Q=diag([1,0,0,0,0]);R=1;
p=[-1.8+2.4j;-1.8-2.4j];[k,P]=lqr(A,b,Q,R);l=(acker(A',c',p))' Gc=-reg(G,k,l);zpk(Gc), eig(Gc.a), t=0:0.05:2;
G_1=feedback(G*Gc,1);a1=eig(G_1.a), y_1=step(G_1,t);
第十二章
function
[t,xx]=diffstate(G,H,x0,u0,N,T)xk=x0;u=u0;t=0 for k=1:N xk=G*xk+H*u;x(:,k)=xk;t=[t,k*T];end;xx=[x0,x];
12.1
function sys=M601(t,x)u=1;
sys=[x(2);x(3);-800*x(1)-80*x(2)-24*x(3)+u];
function
[t,y]=ode4(A,B,C,D,x0,h,r,v,t0,tf)
Ab=A-B*v*C;B=B;C=C;x=x0';y=0;t=t0;
N=round((tf-t0)/h);for i=1:N k1=Ab*x+B*r;
k2=Ab*(x+h*k1/2)+B*r;k3=Ab*(x+h*k2/2)+B*r;k4=Ab*(x+h*k3)+B*r;x=x+h*(k1+2*k2+2*k3+k4)/6;y=[y,C*x];t=[t,t(i)+h];end
12.1
tspan=[0,10];x0=[0,0,0]';
[t,y]=ode45('M601',tspan,x0);y1=800*y(:,1);plot(t,y1);
12.2 num=10;den=conv([1,0],conv([1,2],[1,3]));
[A,B,C,D]=tf2(num,den);x0=[0,0,0];v=1;t0=0;tf=10;h=0.01;r=1;
[t,y]=ode4(A,B,C,D,x0,h,r,v,t0,tf);
plot(t,y),grid
12.3 12.4 g=[-2.8-1.4 0 0;1.4 0 0 0;-1.8-0.3-1.4-0.6;0 0 0.6 0];h=[1 0 1 0]';c=[0 0 0 1];d=0;
x0=[0 0 0 0]';u=1;N=30;T=0.1;
[t,xx]=diffstate(g,h,x0,u,N,T);plot(t,xx);y=c*xx;figure stairs(t,y)grid on
12.6 第十四章
14.1
clear all;load optcar.mat;
t=signals(1,:);p=signals(2,:);v=signals(3,:);a=signals(4,:);theta=signals(5,:);
subplot(4,1,1);plot(t,p);grid on;ylabel('λÖÃ(m)');subplot(4,1,2);plot(t,v);grid on;ylabel('ËÙ¶È(m/s)');subplot(4,1,3);plot(t,a);grid on;ylabel('¼ÓËÙ¶È(m/s2)');subplot(4,1,4);plot(t,theta);grid on;ylabel('½Ç¶È(¶È)');
14.1
clear all load
car.mat %½«µ¼Èëµ½car.matÖеķÂÕæÊµÑéÊý¾Ý¶Á³ö t=signals(1,:);x=signals(2,:);theta=signals(3,:);x1=signals(4,:);theta1=signals(5,:);
plot(t,x,t,x1);ylabel('С³µÎ»ÖÃ(m)'),grid on;%
»æÖÆ¿ØÖÆÁ¦×÷ÓÃϽüËÆÄ£Ðͺ;«È·Ä£ÐÍxµÄµ¥Î»½×Ô¾ÏìÓ¦ÇúÏß figure % »æÖÆ¿ØÖÆÁ¦×÷ÓÃϽüËÆÄ£Ðͺ;«È·Ä£
ÐÍthetaµÄµ¥Î»½×Ô¾ÏìÓ¦ÇúÏß plot(t,theta,t,theta1);ylabel('°Ú½ÇÖµ(rad)'),grid on;