MATLAB中的LQR函数用法 MATLAB dlqr函数()报错,求高手指点
以倒立摆控制器的设计为例:
A = [0 1 0 0
0 0 -1 0
0 0 0 1
0 0 9 0];
B = [0;0.1;0;-0.1];
C = [0 0 1 0]; %观测角度
D = 0;
Q = [1 0 0 0
0 1 0 0
0 0 10 0
0 0 0 10
];
R = 0.1;
%由上面这个系统,可以计算出K
K = lqr(A,B,Q,R);
Ac = A - B*K;
%对系统进行模拟
x0 = [0.1;0;0.1;0]; %初始状态
t = 0:0.05:20;
u = zeros(size(t));
[y,x]=lsim(Ac,B,C,D,u,t,x0);
plot(t,y);
扩展资料
matlab中LQR的使用:
sys_c=ss(Ac,Bc,Cc,Dc);
[Y,T,X]=lsim(sys_c,U,T);
释义:
sys_c=ss(Ac,Bc,Cc,Dc);以Ac,Bc,Cc,Dc作为参数,创建一个状态空间模型。状态空间(ss)是MATLAB控制系统工具箱中非常重要的一种模型形式,和传递函数(tf)、零极点(zpk)可以互相转换。
[Y,T,X]=lsim(sys_c,U,T);使用lsim函数对系统进行仿真。lsim可以接受任意形式的输入信号,不过,就现在的输入信号而言,使用的是单位阶跃信号,其实也可以改用step函数:[Y,T,X]=step(sys_c);结果完全相同。
LQR(linearquadraticregulator)即线性二次型调节器,其对象是现代控制理论中以状态空间形式给出的线性系统,而目标函数为对象状态和控制输入的二次型函数。LQR最优设计指设计是出的状态反馈控制器K要使二次型目标函数J取最小值,而K由权矩阵Q与R唯一决定,故此Q、R的选择尤为重要。LQR理论是现代控制理论中发展最早也最为成熟的一种状态空间设计法。特别可贵的是,LQR可得到状态线性反馈的最优控制规律,易于构成闭环最优控制。而且Matlab的应用为LQR理论仿真提供了条件,更为我们实现稳、准、快的控制目标提供了方便。
LQR Linear-quadratic regulator design for state space systems.
[K,S,E] = LQR(SYS,Q,R,N) calculates the optimal gain matrix K
such that:
* For a continuous-time state-space model SYS, the state-feedback
law u = -Kx minimizes the cost function
J = Integral {x'Qx + u'Ru + 2*x'Nu} dt
subject to the system dynamics dx/dt = Ax + Bu
* For a discrete-time state-space model SYS, u[n] = -Kx[n] minimizes
J = Sum {x'Qx + u'Ru + 2*x'Nu}
subject to x[n+1] = Ax[n] + Bu[n].
The matrix N is set to zero when omitted. Also returned are the
the solution S of the associated algebraic Riccati equation and
the closed-loop eigenvalues E = EIG(A-B*K).
[K,S,E] = LQR(A,B,Q,R,N) is an equivalent syntax for continuous-time
models with dynamics dx/dt = Ax + Bu
matlab中LQR的使用~
【问】
sys_c=ss(Ac,Bc,Cc,Dc);[Y,T,X]=lsim(sys_c,U,T);这两句话什么意思?
【答】
两句分别解释:
sys_c=ss(Ac,Bc,Cc,Dc); 以Ac,Bc,Cc,Dc作为参数,创建一个状态空间模型。状态空间(ss)是MATLAB控制系统工具箱中非常重要的一种模型形式,和传递函数(tf)、零极点(zpk)可以互相转换。
[Y,T,X]=lsim(sys_c,U,T); 使用lsim函数对系统进行仿真。lsim可以接受任意形式的输入信号,不过,就现在的输入信号而言,使用的是单位阶跃信号,其实也可以改用step函数:[Y,T,X]=step(sys_c);结果完全相同。
【问】
我要是想要用save保存我这个编程的输入、输出和控制过程中的数据该怎么保存?
【答】
输入信号由U、T给出,输出信号是Y,状态量是X,原系统模型是A、B、C、D,状态反馈矩阵是K,二次型最优指标是Q、R,把这些数据保存下来就可以了。
【问】
用SIMULINK的话我要怎么设置SIMULINK?
【答】
如果用Simulink,被控对象可使用State-space模块实现,输入使用Step模块,输出用Scope观察即可。其他似乎没什么需要特别设置的了,如果还有问题请追问吧。
原因以及解决方法已经说得比较清楚了吧?
1、确信系统矩阵A所有的不稳定极点都是可以通过B控制的(可使用minreal检查);
2、修改权值矩阵Q和R,确保 [Q N;N' R]正定(使用eig函数检查)。由于题主调用时未指定N,默认的N为0。
零极点对消什么意思
答:这不一定啊!极零抵消例如,该前向信道G1(S)的传递函数= K / [S(S 2)(S 3)]中,反馈路径G2(S)=(S 2),经过简化G(S)= G1(S)= K / [S(S 3)],他可能有极点 - 零点对冗余的,在根轨迹图像表现不出现,关于根轨迹的零极点,他们的位置和与放大倍数无关的开环,无...
求大神帮忙,输入字符不是 MATLAB 语句或表达式中的有效字符
答:matlab中输入字符串,是要用英文的单引号括起来,你切换为英文输入法,再试试。
matlab的lqr在哪里
答:你可以在Matlab安装目录下去搜索.
请问如何用Matlab求黎卡提代数方程?求大神帮忙!!
答:Unbalanced or misused parentheses or brackets.是提示错误括号不对称,缺了或者多了.lqr函数的格式有这几种 [K,S,e]= lqr(SYS,Q,R)[K,S,e]= lqr(SYS,Q,R,N)[K,S,e]= lqr(A,B,Q,R,N)楼主[K,P,E]=lqr[A,B,Q,R,N],应该把后面改成小括号 [K,P,E]=lqr(A,B,Q,R,...
如何用MATLAB 求解黎卡提代数方程?
答:Unbalanced or misused parentheses or brackets.是提示错误括号不对称,缺了或者多了.lqr函数的格式有这几种 [K,S,e] = lqr(SYS,Q,R)[K,S,e] = lqr(SYS,Q,R,N)[K,S,e] = lqr(A,B,Q,R,N)楼主[K,P,E]=lqr[A,B,Q,R,N],应该把后面改成小括号 [K,P,E]=lqr(A,B,Q...
对于双容水箱液位控制,在Matlab中如何使用LQR函数来得到状态反馈矩阵...
答:两句分别解释:sys_c=ss(Ac,Bc,Cc,Dc); 以Ac,Bc,Cc,Dc作为参数,创建一个状态空间模型。状态空间(ss)是MATLAB控制系统工具箱中非常重要的一种模型形式,和传递函数(tf)、零极点(zpk)可以互相转换。[Y,T,X]=lsim(sys_c,U,T); 使用lsim函数对系统进行仿真。lsim可以接受任意形式的输入...
LQR是什么意思?
答:Q为性能指标函数对于状态量的权阵,为对角阵,元素越大,意味着该变量在性能函数中越重要。要求性能函数求最小,也就是说该状态的约束要求高。R阵为控制量的权重,对角阵,同样,对应的元素越大,这意味着,控制约束越大。
什么是LQR?
答:Q为性能指标函数对于状态量的权阵,为对角阵,元素越大,意味着该变量在性能函数中越重要。要求性能函数求最小,也就是说该状态的约束要求高。R阵为控制量的权重,对角阵,同样,对应的元素越大,这意味着,控制约束越大。
LQR控制的Q和R是怎么确定的?
答:Q为性能指标函数对于状态量的权阵,为对角阵,元素越大,意味着该变量在性能函数中越重要。要求性能函数求最小,也就是说该状态的约束要求高。R阵为控制量的权重,对角阵,同样,对应的元素越大,这意味着,控制约束越大。
LQR这三个字母是什么字
答:特别可贵的是 ,LQR可得到状态线性反馈的最优控制规律 ,易于构成闭环最优控制。而且 Matlab 的应用为LQR 理论仿真提供了条件 ,更为我们实现稳、准、快的控制目标提供了方便。 对于线性系统的控制器设计问题,如果其性能指标是状态变量和(或)控制变量的二次型函数的积分,则这种动态系统的最优化问题称为...