我是靠谱客的博主 积极星月,这篇文章主要介绍matlab求取状态方程的传递函数并实现系统解耦matlab求取状态方程的传递函数并实现系统解耦,现在分享给大家,希望可以做个参考。

matlab求取状态方程的传递函数并实现系统解耦

matlab对于求取传递函数有现成的函数可调用,但是要注意单输入和多输入的差别。系统解耦没有响应的函数,需要我们根据系统解耦的原理自行编程。
要解耦,首先需要判断系统是否满足解耦的条件。对于状态方程形式,可以通过判断 c i A u i B ≠ 0 c_iA^{u_i}Bneq0 ciAuiB=0时, u i u_i ui的值。 E i = c i A u B E_i=c_iA^uB Ei=ciAuB
E = [ E 1 E 2 ⋮ ] E=begin{bmatrix} E_1 \ E_2 \ vdots \ end{bmatrix} E=E1E2
若E非奇异,则系统可解耦。
F = [ F 1 F 2 ⋮ ] = [ c 1 A u 1 + 1 c 2 A u 2 + 1 ⋮ ] F=begin{bmatrix} F_1 \ F_2 \ vdots \ end{bmatrix}=begin{bmatrix} c_1A^{u_1+1} \ c_2A^{u_2+1} \ vdots \ end{bmatrix} F=F1F2=c1Au1+1c2Au2+1
K = E − 1 F , L = E − 1 K=E^{-1}F, L=E^{-1} K=E1F,L=E1
得到控制率 U = L v − K x U=Lv-Kx U=LvKx代入原方程得到新的状态方程
x ˙ = ( A − B L F ) x + B L U y = C x dot{x}=(A-BLF)x+BLU\y=Cx x˙=(ABLF)x+BLUy=Cx
最后根据要求再进行相应的极点配置。

matlab程序

以三阶为例
A = [ 0 0 0 0 0 1 − 1 − 1 − 3 ] B = [ 1 0 0 0 0 1 ] A=begin{bmatrix} 0&0&0 \ 0&0&1 \ -1&-1&-3 \ end{bmatrix} B=begin{bmatrix} 1&0 \ 0&0 \ 0&1\ end{bmatrix} A=001001013B=100001
C = [ 1 1 0 0 0 1 ] C=begin{bmatrix} 1&1&0 \ 0&0&1 \ end{bmatrix} C=[101001]

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// An highlighted block A=[0 0 0;0 0 1;-1 -1 -3]; B=[1 0;0 0;0 1]; C=[1 1 0;0 0 1]; D=zeros(2,2); %状态矩阵 [num1,den1]=ss2tf(A,B,C,D,1) %传递函数 [num2,den2]=ss2tf(A,B,C,D,2) %系统解耦------------------- [m,n]=size(C); E=zeros(m,m); F=zeros(m,n); for i=1:m u=1; E(i,:)=C(i,:)*A*B; while(rank(E)==0) u=u+1; E(i,:)=C(i,:)*A^u*B; end F(i,:)=C(i,:)*A^(u+1); end L=inv(E); K=L*F; A0=A-B*L*F; %解耦后的状态矩阵 B0=B*L; C0=C; %极点配置----------- J=[-2 -3 0]; %期望极点 K1=place(A0,B0,J)

最后

以上就是积极星月最近收集整理的关于matlab求取状态方程的传递函数并实现系统解耦matlab求取状态方程的传递函数并实现系统解耦的全部内容,更多相关matlab求取状态方程内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(83)

评论列表共有 0 条评论

立即
投稿
返回
顶部