matlab现代控制理论实验报告高立群
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验 1 用 MATLAB 分析状态空间模型
1、实验设备 PC 计算机 1 台,MATLAB 软件 1 套。
2、实验目的 ① 学习系统状态空间表达式的建立方法、了解系统状态空间表达式与传递函数相互转
换的方法; ② 通过编程、上机调试,掌握系统状态空间表达式与传递函数相互转换方法。
3、实验原理说明 参考教材 P56~59“2.7 用 MATLAB 分析状态空间模型” 4、实验步骤
X1 Y
X2
(4)
u
0
,
x
0
1 2
,绘制系统的状态响应及输出响应曲线;
代码:>> x04=[1;2]; [y,t,x]=initial(SG,x04,t);%零输入响应 plot(t,x,t,y,':r')%状态响应曲线%输出响应曲线 运行结果:
X1
Y X2
(5)在余弦输入信号和初始状态
x
0
1 1
题 3.1 & 题 3.2 已知系数阵 A 和输入阵 B 分别如下,判断系统的状态能控性与能观性
6.666 10.6667 0.3333
0
A
1
0
1
,
B 1
,
0
1
2
1
C 1 0 2
代码:>> A=[6.666,-10.6667,-0.3333;1,0,1;0,1,2]; C=[1,0,2]; Uo=[C;C*A;C*A^2]; n=length(A); flag1=rank(Uo); Uc=[B,A*B,A^2*B];
题 3.3 已知系统状态空间描述如下
0 2 1 1
x
5
1
2
x
0
u
2 0 0 1
y 1 1 0 x
(1)判断系统的状态能控性; (2)判断系统的状态能观测性; (3)构造变换阵,将其变换成能控标准形; (4)构造变换阵,将其变换成能观测标准形;
>> A=[0,2,-1;5,1,2;-2,0,0]; B=[1;0;-1]; C=[1,1,0]; n=length(A); Uc=[B,A*B,A^2*B]; Uco=[C;C*A;C*A^2]; flagC=rank(Uc); flagO=rank(Uco); if n==flagC disp('系统可控'); end if n==flagO disp('系统可观'); end Ni_Uc=inv(Uc);%Uc 的逆矩阵 P1=[0,0,1]*Ni_Uc; P=[P1;P1*A;P1*A^2]; Ni_P=inv(P);%P 的逆矩阵 Ac=P*A*Ni_P Bc=P*B T1=inv(Uco)*[0;0;1]; T=[T1,A*T1,A^2*T1]; Ao=inv(T)*A*T Co=C*T 运行结果: 系统可控 系统可观
题 2.2 已知一个连续系统的状态方程是
0 1 0 x 25 4 x 1 u 若取采样周期T 0.05 秒
(1)试求相应的离散化状态空间模型; (2)分析不同采样周期下,离散化状态空间模型的结果。
代码:>> A=[0,1;-25,-4]; B=[0;1]; t=[0:0.05:4]; T=0.05; A=[0 1;-25 -4]; B=[0;1]; [G,H]=c2d(A,B,T)%离散化状态方程:x[k+1]=G*x(k)+H*u(k) 运行结果: G=
(1)利用李雅普诺夫第一方法判断其稳定性; (2)利用李雅普诺夫第二方法判断其稳定性。
代码:>> A=[0,2,-1;5,1,2;-2,0,0]; B=[1;0;-1]; C=[1,1,0]; D=0; flag1=0; flag2=0; [z,p,k]=ss2zp(A,B,C,D,1); n=length(A); %利亚普诺夫第一方法 for i=1:n
将一般形式的状态空间描述变换成能控标准形、能观标准形。 3、实验原理说明
参考教材 P117~118“4.2.4 利用 MATLAB 判定系统能控性” P124~125“4.3.3 利用 MATLAB 判定系统能观测性”
4、实验步骤 ① 根据系统的系数阵 A 和输入阵 B,依据能控性判别式,对所给系统采用 MATLAB 编 程;在 MATLAB 界面下调试程序,并检查是否运行正确。 ② 根据系统的系数阵 A 和输出阵 C,依据能观性判别式,对所给系统采用 MATLAB 编 程;在 MATLAB 界面下调试程序,并检查是否运行正确。 ③ 构造变换阵,将一般形式的状态空间描述变换成能控标准形、能观标准形。
y1
0 0.125 0.625
1
d= u1
题 1.2 已知 SISO 系统的状态空间表达式为
x1 0 1 0 x1 1
x1
x2
0
0
1
x2
3
u
,
y
1
0
0
x2
x3 4 3 2 x3 6
x3
(1)将其输入到 MATLAB 工作空间; (2)求系统的传递函数。
代码
>> num=[1,5,8];
den=[1,2,6,3,9];
TFG=tf(num,den);
Hale Waihona Puke Baidu
SG=ss(TFG) 运行结果
a=
x1 x2 x3 x4
x1 -2 -1.5 -0.75 -2.25
x2
4
0
0
0
x3
0
1
0
0
x4
0
0
1
0
b=
u1
x1 2
x2 0
x3 0
x4 0
c=
x1 x2 x3 x4
0.9709 0.0448 -1.1212 0.7915 H=
0.0012 0.0448
实验 3 系统的能控性、能观测性分析
、实验设备 PC 计算机 1 台,MATLAB 软件 1 套。
2、实验目的 ① 学习系统状态能控性、能观测性的定义及判别方法; ② 通过用 MATLAB 编程、上机调试,掌握系统能控性、能观测性的判别方法,掌握
① 根据所给系统的传递函数或 A、B、C 矩阵,依据系统的传递函数阵和状态空间表达 式之间的关系式,采用 MATLAB 编程。
② 在 MATLAB 界面下调试程序,并检查是否运行正确。
题 1.1 已知 SISO 系统的传递函数为
g(s)
s4
s2 2s3
5s 8 6s2 3s
9
(1)将其输入到 MATLAB 工作空间; (2)获得系统的状态空间模型。
if real(p(i))>0 flag1=1;
end end %利亚普诺夫第二方法 Q=eye(3,3);%Q=I P=lyap(A,Q);%求解矩阵 P for i=1:n
det(P(1:i,1:i)); if (det(P(1:i,1:i))<=0)
flag2=1; end end 运行结果: flag1 flag2
3、实验原理说明 参考教材 P178~181“5.3.4 利用 MATLAB 进行稳定性分析”
4、实验步骤 (1)掌握利用李雅普诺夫第一方法判断系统稳定性; (2)掌握利用李雅普诺夫第二方法判断系统稳定性。
题 4.1 某系统状态空间描述如下
0 2 1 1
x
5
1
2
x
0
u
2 0 0 1
y 1 1 0 x
实验 2 利用 MATLAB 求解系统的状态方程
1、实验设备 PC 计算机 1 台,MATLAB 软件 1 套。
2、实验目的 ① 学习系统齐次、非齐次状态方程求解的方法,计算矩阵指数,求状态响应; ② 通过编程、上机调试,掌握求解系统状态方程的方法,学会绘制状态响应曲线; ③ 掌握利用 MATLAB 导出连续状态空间模型的离散化模型的方法。 3、实验原理说明 参考教材 P99~101“3.8 利用 MATLAB 求解系统的状态方程” 4、实验步骤 (1)根据所给系统的状态方程,依据系统状态方程的解的表达式,采用 MATLAB 编程。
X1 Y
X2
(3)
u
1 et
cos 3t
,
x
0
0 0
,绘制系统的状态响应及输出响应曲线;
代码:>> u3=1+exp(-t).*cos(3*t);%零状态响应,u3=1+exp(-t3).*cos(3*t3);
[y,t,x]=lsim(SG,u3,t); plot(t,x,t,y,':r')%状态响应曲线%输出响应曲线 xlabel('时间 t'),ylabel('响应'),title(''); 运行结果:
flag1 = 1
flag2 = 1
///flag=1 说明系统稳定
实验 5 利用 MATLAB 实现极点配置、设计状态观测器
1、实验设备 PC 计算机 1 台,MATLAB 软件 1 套。
2、实验目的 ① 学习闭环系统极点配置定理及算法,学习全维状态观测器设计方法;
② 通过用 MATLAB 编程、上机调试,掌握极点配置算法,设计全维状态观测器。 3、实验原理说明
下的状态响应曲线。
代码:>> x04=[1;2]; [y,t,x]=initial(SG,x04,t);%零输入响应 plot(t,x,t,y,':r')%状态响应曲线%输出响应曲线 >> x0=[1;1]; u=cos(t); [y,t,x]=lsim(SG,u,t,x0); subplot(2,1,1),plot(t,x(:,1)) xlabel('Time(sec)'),ylabel('X_1') subplot(2,1,2),plot(t,x(:,2)) xlabel('Time(sec)'),ylabel('X_2') 运行结果:
n=length(A); flag2=rank(Uc);
disp('系统状态::'); if flag2==n
disp('系统可控'); else disp('系统不可控'); end
if flag1==n disp('系统可观');
else disp('系统不可观'); end 运行结果: 系统状态:: 系统可控 系统可观
代码: >> A=[0,1,0;0,0,1;-4,-3,-2];%系统状态参数; B=[1;3;-6]; C=[1,0,0]; D=0; SG=ss(A,B,C,D);%构建状态方程; TFG=tf(SG);%由状态方程得到传递函数; TFG 运行结果: Transfer function:
s^2 + 5 s + 3 --------------------s^3 + 2 s^2 + 3 s + 4
0.8452 0.2387 -0.4773 0.1292
Response1 =
0.6065 -0.6065
(
2
)
u 1(t)
,
x
0
0 0
,
绘
制
系
统
的状
态
响
应
及
输出
响
应
曲
线
;
代码:>> t=[0:0.02;10];%阶跃响应 [y,t,x]=step(SG); plot(t,x,t,y,':r')
运行结果
参考教材 P204~207 “6.2.5 利用 MATLAB 实现极点配置” P227~230 “6.4.4 利用 MATLAB 设计状态观测器”
4、实验步骤 (1)掌握采用直接计算法、采用 Ackermann 公式计算法、调用 place 函数法分别进行 闭环系统极点配置; (2)掌握利用 MATLAB 设计全维状态观测器
Ac = 0 0
-10.0000
1.0000 0.0000 12.0000
0 1.0000 1.0000
Bc = 0 0
1.0000 Ao =
0 0 -10 1 0 12 011 Co = 001
实验 4 系统稳定性分析
实验设备 PC 计算机 1 台,MATLAB 软件 1 套。
2、实验目的 ① 学习系统稳定性的定义及李雅普诺夫稳定性定理; ② 通过用 MATLAB 编程、上机调试,掌握系统稳定性的判别方法。
(2)在 MATLAB 界面下调试程序,并检查是否运行正确。 题 2.1 已知 SISO 系统的状态方程为
x
0 2
1 3
x
3 0
u
y 1 1 x
(1)
u
0
,
x
0
1 1
,求当
t=0.5
时系统的矩阵系数及状态响应;
代码: >> A=[0,1;-2,-3];%系统状态参数 B=[3;0]; C=[1,1]; D=[0]; SG=ss(A,B,C,D); t=0.5; X0=[1;-1]; %1 EA=expm(A*t)%t=0.5 时的状态转移矩阵 e^At|t=0.5 Response1=EA*X0%u=0,t=0.5 时的状态响应 运行结果: EA =
题 5.1 某系统状态方程如下
0 1 0 1
x
0
0
1
x
3
u
4 3 2 6
y 1 0 0 x
理想闭环系统的极点为1 2 3,试
(1) 采用直接计算法进行闭环系统极点配置;
(2) 采用 Ackermann 公式计算法进行闭环系统极点配置;
代码:>> A=[0,1,0;0,0,1;-4,-3,-2]; B=[1;3;-6]; C=[1,0,0]; P=[-1,-2,-3]; K=acker(A,B,P); A1=A-B*K; K A1 运行结果: K=
1、实验设备 PC 计算机 1 台,MATLAB 软件 1 套。
2、实验目的 ① 学习系统状态空间表达式的建立方法、了解系统状态空间表达式与传递函数相互转
换的方法; ② 通过编程、上机调试,掌握系统状态空间表达式与传递函数相互转换方法。
3、实验原理说明 参考教材 P56~59“2.7 用 MATLAB 分析状态空间模型” 4、实验步骤
X1 Y
X2
(4)
u
0
,
x
0
1 2
,绘制系统的状态响应及输出响应曲线;
代码:>> x04=[1;2]; [y,t,x]=initial(SG,x04,t);%零输入响应 plot(t,x,t,y,':r')%状态响应曲线%输出响应曲线 运行结果:
X1
Y X2
(5)在余弦输入信号和初始状态
x
0
1 1
题 3.1 & 题 3.2 已知系数阵 A 和输入阵 B 分别如下,判断系统的状态能控性与能观性
6.666 10.6667 0.3333
0
A
1
0
1
,
B 1
,
0
1
2
1
C 1 0 2
代码:>> A=[6.666,-10.6667,-0.3333;1,0,1;0,1,2]; C=[1,0,2]; Uo=[C;C*A;C*A^2]; n=length(A); flag1=rank(Uo); Uc=[B,A*B,A^2*B];
题 3.3 已知系统状态空间描述如下
0 2 1 1
x
5
1
2
x
0
u
2 0 0 1
y 1 1 0 x
(1)判断系统的状态能控性; (2)判断系统的状态能观测性; (3)构造变换阵,将其变换成能控标准形; (4)构造变换阵,将其变换成能观测标准形;
>> A=[0,2,-1;5,1,2;-2,0,0]; B=[1;0;-1]; C=[1,1,0]; n=length(A); Uc=[B,A*B,A^2*B]; Uco=[C;C*A;C*A^2]; flagC=rank(Uc); flagO=rank(Uco); if n==flagC disp('系统可控'); end if n==flagO disp('系统可观'); end Ni_Uc=inv(Uc);%Uc 的逆矩阵 P1=[0,0,1]*Ni_Uc; P=[P1;P1*A;P1*A^2]; Ni_P=inv(P);%P 的逆矩阵 Ac=P*A*Ni_P Bc=P*B T1=inv(Uco)*[0;0;1]; T=[T1,A*T1,A^2*T1]; Ao=inv(T)*A*T Co=C*T 运行结果: 系统可控 系统可观
题 2.2 已知一个连续系统的状态方程是
0 1 0 x 25 4 x 1 u 若取采样周期T 0.05 秒
(1)试求相应的离散化状态空间模型; (2)分析不同采样周期下,离散化状态空间模型的结果。
代码:>> A=[0,1;-25,-4]; B=[0;1]; t=[0:0.05:4]; T=0.05; A=[0 1;-25 -4]; B=[0;1]; [G,H]=c2d(A,B,T)%离散化状态方程:x[k+1]=G*x(k)+H*u(k) 运行结果: G=
(1)利用李雅普诺夫第一方法判断其稳定性; (2)利用李雅普诺夫第二方法判断其稳定性。
代码:>> A=[0,2,-1;5,1,2;-2,0,0]; B=[1;0;-1]; C=[1,1,0]; D=0; flag1=0; flag2=0; [z,p,k]=ss2zp(A,B,C,D,1); n=length(A); %利亚普诺夫第一方法 for i=1:n
将一般形式的状态空间描述变换成能控标准形、能观标准形。 3、实验原理说明
参考教材 P117~118“4.2.4 利用 MATLAB 判定系统能控性” P124~125“4.3.3 利用 MATLAB 判定系统能观测性”
4、实验步骤 ① 根据系统的系数阵 A 和输入阵 B,依据能控性判别式,对所给系统采用 MATLAB 编 程;在 MATLAB 界面下调试程序,并检查是否运行正确。 ② 根据系统的系数阵 A 和输出阵 C,依据能观性判别式,对所给系统采用 MATLAB 编 程;在 MATLAB 界面下调试程序,并检查是否运行正确。 ③ 构造变换阵,将一般形式的状态空间描述变换成能控标准形、能观标准形。
y1
0 0.125 0.625
1
d= u1
题 1.2 已知 SISO 系统的状态空间表达式为
x1 0 1 0 x1 1
x1
x2
0
0
1
x2
3
u
,
y
1
0
0
x2
x3 4 3 2 x3 6
x3
(1)将其输入到 MATLAB 工作空间; (2)求系统的传递函数。
代码
>> num=[1,5,8];
den=[1,2,6,3,9];
TFG=tf(num,den);
Hale Waihona Puke Baidu
SG=ss(TFG) 运行结果
a=
x1 x2 x3 x4
x1 -2 -1.5 -0.75 -2.25
x2
4
0
0
0
x3
0
1
0
0
x4
0
0
1
0
b=
u1
x1 2
x2 0
x3 0
x4 0
c=
x1 x2 x3 x4
0.9709 0.0448 -1.1212 0.7915 H=
0.0012 0.0448
实验 3 系统的能控性、能观测性分析
、实验设备 PC 计算机 1 台,MATLAB 软件 1 套。
2、实验目的 ① 学习系统状态能控性、能观测性的定义及判别方法; ② 通过用 MATLAB 编程、上机调试,掌握系统能控性、能观测性的判别方法,掌握
① 根据所给系统的传递函数或 A、B、C 矩阵,依据系统的传递函数阵和状态空间表达 式之间的关系式,采用 MATLAB 编程。
② 在 MATLAB 界面下调试程序,并检查是否运行正确。
题 1.1 已知 SISO 系统的传递函数为
g(s)
s4
s2 2s3
5s 8 6s2 3s
9
(1)将其输入到 MATLAB 工作空间; (2)获得系统的状态空间模型。
if real(p(i))>0 flag1=1;
end end %利亚普诺夫第二方法 Q=eye(3,3);%Q=I P=lyap(A,Q);%求解矩阵 P for i=1:n
det(P(1:i,1:i)); if (det(P(1:i,1:i))<=0)
flag2=1; end end 运行结果: flag1 flag2
3、实验原理说明 参考教材 P178~181“5.3.4 利用 MATLAB 进行稳定性分析”
4、实验步骤 (1)掌握利用李雅普诺夫第一方法判断系统稳定性; (2)掌握利用李雅普诺夫第二方法判断系统稳定性。
题 4.1 某系统状态空间描述如下
0 2 1 1
x
5
1
2
x
0
u
2 0 0 1
y 1 1 0 x
实验 2 利用 MATLAB 求解系统的状态方程
1、实验设备 PC 计算机 1 台,MATLAB 软件 1 套。
2、实验目的 ① 学习系统齐次、非齐次状态方程求解的方法,计算矩阵指数,求状态响应; ② 通过编程、上机调试,掌握求解系统状态方程的方法,学会绘制状态响应曲线; ③ 掌握利用 MATLAB 导出连续状态空间模型的离散化模型的方法。 3、实验原理说明 参考教材 P99~101“3.8 利用 MATLAB 求解系统的状态方程” 4、实验步骤 (1)根据所给系统的状态方程,依据系统状态方程的解的表达式,采用 MATLAB 编程。
X1 Y
X2
(3)
u
1 et
cos 3t
,
x
0
0 0
,绘制系统的状态响应及输出响应曲线;
代码:>> u3=1+exp(-t).*cos(3*t);%零状态响应,u3=1+exp(-t3).*cos(3*t3);
[y,t,x]=lsim(SG,u3,t); plot(t,x,t,y,':r')%状态响应曲线%输出响应曲线 xlabel('时间 t'),ylabel('响应'),title(''); 运行结果:
flag1 = 1
flag2 = 1
///flag=1 说明系统稳定
实验 5 利用 MATLAB 实现极点配置、设计状态观测器
1、实验设备 PC 计算机 1 台,MATLAB 软件 1 套。
2、实验目的 ① 学习闭环系统极点配置定理及算法,学习全维状态观测器设计方法;
② 通过用 MATLAB 编程、上机调试,掌握极点配置算法,设计全维状态观测器。 3、实验原理说明
下的状态响应曲线。
代码:>> x04=[1;2]; [y,t,x]=initial(SG,x04,t);%零输入响应 plot(t,x,t,y,':r')%状态响应曲线%输出响应曲线 >> x0=[1;1]; u=cos(t); [y,t,x]=lsim(SG,u,t,x0); subplot(2,1,1),plot(t,x(:,1)) xlabel('Time(sec)'),ylabel('X_1') subplot(2,1,2),plot(t,x(:,2)) xlabel('Time(sec)'),ylabel('X_2') 运行结果:
n=length(A); flag2=rank(Uc);
disp('系统状态::'); if flag2==n
disp('系统可控'); else disp('系统不可控'); end
if flag1==n disp('系统可观');
else disp('系统不可观'); end 运行结果: 系统状态:: 系统可控 系统可观
代码: >> A=[0,1,0;0,0,1;-4,-3,-2];%系统状态参数; B=[1;3;-6]; C=[1,0,0]; D=0; SG=ss(A,B,C,D);%构建状态方程; TFG=tf(SG);%由状态方程得到传递函数; TFG 运行结果: Transfer function:
s^2 + 5 s + 3 --------------------s^3 + 2 s^2 + 3 s + 4
0.8452 0.2387 -0.4773 0.1292
Response1 =
0.6065 -0.6065
(
2
)
u 1(t)
,
x
0
0 0
,
绘
制
系
统
的状
态
响
应
及
输出
响
应
曲
线
;
代码:>> t=[0:0.02;10];%阶跃响应 [y,t,x]=step(SG); plot(t,x,t,y,':r')
运行结果
参考教材 P204~207 “6.2.5 利用 MATLAB 实现极点配置” P227~230 “6.4.4 利用 MATLAB 设计状态观测器”
4、实验步骤 (1)掌握采用直接计算法、采用 Ackermann 公式计算法、调用 place 函数法分别进行 闭环系统极点配置; (2)掌握利用 MATLAB 设计全维状态观测器
Ac = 0 0
-10.0000
1.0000 0.0000 12.0000
0 1.0000 1.0000
Bc = 0 0
1.0000 Ao =
0 0 -10 1 0 12 011 Co = 001
实验 4 系统稳定性分析
实验设备 PC 计算机 1 台,MATLAB 软件 1 套。
2、实验目的 ① 学习系统稳定性的定义及李雅普诺夫稳定性定理; ② 通过用 MATLAB 编程、上机调试,掌握系统稳定性的判别方法。
(2)在 MATLAB 界面下调试程序,并检查是否运行正确。 题 2.1 已知 SISO 系统的状态方程为
x
0 2
1 3
x
3 0
u
y 1 1 x
(1)
u
0
,
x
0
1 1
,求当
t=0.5
时系统的矩阵系数及状态响应;
代码: >> A=[0,1;-2,-3];%系统状态参数 B=[3;0]; C=[1,1]; D=[0]; SG=ss(A,B,C,D); t=0.5; X0=[1;-1]; %1 EA=expm(A*t)%t=0.5 时的状态转移矩阵 e^At|t=0.5 Response1=EA*X0%u=0,t=0.5 时的状态响应 运行结果: EA =
题 5.1 某系统状态方程如下
0 1 0 1
x
0
0
1
x
3
u
4 3 2 6
y 1 0 0 x
理想闭环系统的极点为1 2 3,试
(1) 采用直接计算法进行闭环系统极点配置;
(2) 采用 Ackermann 公式计算法进行闭环系统极点配置;
代码:>> A=[0,1,0;0,0,1;-4,-3,-2]; B=[1;3;-6]; C=[1,0,0]; P=[-1,-2,-3]; K=acker(A,B,P); A1=A-B*K; K A1 运行结果: K=