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 理论仿真提供了条件 ,更为我们实现稳、准、快的控制目标提供了方便。 对于线性系统的控制器设计问题,如果其性能指标是状态变量和(或)控制变量的二次型函数的积分,则这种动态系统的最优化问题称为...