matlab求取状态方程的传递函数并实现系统解耦
matlab求取状态方程的传递函数并实现系统解耦
matlab对于求取传递函数有现成的函数可调用,但是要注意单输入和多输入的差别。系统解耦没有响应的函数,需要我们根据系统解耦的原理自行编程。
要解耦,首先需要判断系统是否满足解耦的条件。对于状态方程形式,可以通过判断ciAuiB≠0c_iA^{u_i}B\neq0 ciAuiB=0时,uiu_iui的值。Ei=ciAuBE_i=c_iA^uB Ei=ciAuB
E=[E1E2⋮]E=\begin{bmatrix} E_1 \\ E_2 \\ \vdots \\ \end{bmatrix}E=⎣⎢⎡E1E2⋮⎦⎥⎤
若E非奇异,则系统可解耦。
F=[F1F2⋮]=[c1Au1+1c2Au2+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−1F,L=E−1K=E^{-1}F, L=E^{-1}K=E−1F,L=E−1
得到控制率U=Lv−KxU=Lv-KxU=Lv−Kx代入原方程得到新的状态方程
x˙=(A−BLF)x+BLUy=Cx\dot{x}=(A-BLF)x+BLU\\y=Cxx˙=(A−BLF)x+BLUy=Cx
最后根据要求再进行相应的极点配置。
matlab程序
以三阶为例
A=[000001−1−1−3]B=[100001]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=⎣⎡00−100−101−3⎦⎤B=⎣⎡100001⎦⎤
C=[110001]C=\begin{bmatrix} 1&1&0 \\ 0&0&1 \\ \end{bmatrix}C=[101001]
// 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:mu=1;E(i,:)=C(i,:)*A*B; while(rank(E)==0)u=u+1;E(i,:)=C(i,:)*A^u*B; endF(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求取多个闭合区域的轮廓、面积和bbox
问题描述 要对如下所示的二值标签图做如下处理: 获取每一个闭合小区域的轮廓曲线坐标 获取每一个闭合小区域的面积 获取每一个闭合小区域的 bounding box 处理方法 问题一: 获取每一个闭合小区 ...
- matlab 求取矩阵中值,matlab中取矩阵中指定列的值组成新矩阵
matlab 矩阵中怎么加入冒号,比如我想矩阵A的第一列都为"1:" A(:,1)='1:';再问:不行的再答:用结构矩阵或者单元矩阵试试吧. 诚教:matlab中取矩阵的其中几行 ...
- 快速入门Matlab——求取一元函数最小值和零点
Matlab程序推荐:智能微电网PSO优化算法 利用白噪声特性和ARMR模型,通过求解模型参数生成随机风速 粒子群综合能源系统优化的matlab实现 学习目标:求一元函数最小值和零点 %% 函数的极 ...
- 用matlab求其零极点,用CZT求解系统函数的零极点:算法说明及MATLAB程序演示
求解z 变换)(z X 的零.极点 设)(n x 是实序列,其z 变换)(z X 一般是z 或1-z 的实系数有理分式.当)(z X 的分子多项式和分母多项式的阶数很高时,分解因式求)(z X 的零. ...
- matlab将空间描述转变为约当阵,matlab求约当标准型
-- 矩阵的转置 jordan -- 约当标准型 simple -- 符号矩阵简化 solve(f) -- 求一个方程的解 经济数学实验班 1101 班 数学软件应用 MATLAB 复习资料 .... ...
- java 获取每月每一天_java 求取某一段时间内的每一天、每一月、每一年
1.求取某一段时间内的每一天 Date date0 = new SimpleDateFormat("yyyy-MM-dd").parse("2014-01-01" ...
- MATLAB点云处理:读取、展示、最近邻、ICP算法求取转移矩阵、旋转
MATLAB中关于点云的几个函数的简单应用.作者使用的是MATLAB R2015b,这几个函数应该是在Computer Vison包里. 全文都是作者自己结合MATLAB文档的理解,欢迎指教. 1. ...
- 怎么用matlab分析孔隙度,基于MATLAB软件的声波测井孔隙度求取
·99·2016年 第 24 期 基于MATLAB软件的声波测井孔隙度求取 向旻 (新疆工程学院,新疆 乌鲁木齐 830091) 摘要 :目前,声波测井是一种重要的孔隙度测井方法,被各大油田广泛的使用 ...
- 使用Matlab对频繁2项集和频繁3项集的求取
使用Matlab对频繁2项集和频繁3项集的求取 一.问题描述 二.实验目的 三.实验内容 程序实现(详细代码) 运行结果截图 分析 四.总结 本文作者原创,如需转载,请注明原作者和地址,谢谢合作! 一 ...
- matlab 向量取倒数,Matlab 求倒数命令及控制方法
建立符号变量命令sym和syms调用格式: x=sym('x'), 建立符号变量x: syms x y z , 建立多个符号变量x,y,z: matlab求导命令diff调用格式: diff(函数) ...
最新文章
- linux系统管理必备知识之关机命令
- fragment的基本使用
- Linux shell ==运算符
- 【BJOI2017】树的难题【点分治】【线段树】
- 一分钟了解微服务的好处和陷阱
- 好的身体是革命的本钱
- Java实现贪吃蛇游戏【代码】
- matlab 时钟日历教程,Flash制作电子日历时钟教程
- 区块链底层架构概览:第一原则框架
- java 鸡尾酒排序_十大经典排序【Java实现,手工作坊式】
- matlab centralize,智课雅思词汇---二十三、动词性后缀-ate-fy-ish-ize
- excel中roundup使用指南
- 从裁员到扩招/从自研到生态,汽车行业新年新气象
- PS新手淘宝美工常见问题-主图和详情尺寸(一)
- opc ua 用哪种语言编写_什么是OPC UA?
- 内嵌资源html,go 1.16 embed 实现资源文件(html, css, js等)内嵌
- java apache 日志_了解Apache的访问日志
- jsoncpp在vs2012下的环境搭建(C++)
- C语言高一,高一数学上学期的所有知识点
- select查询之联合查询