步骤:

1.  \dot x =A*x + B*u is a state space model, with A and B are known. Now we want to locate the poles p at the desired location, so need the help with designing a controller: u= - k*x。How to choose the gain k?

Answer: Substituting u= - k*x, then \dot = (A-B*K)x, use place function in Matlab to input (A,B,p), obtaining k from the output.

About the introduction of place function, I attach a paragraph from Wikipedia here:

Description

Given the single- or multi-input system

˙x=Ax+Bu

and a vector p of desired self-conjugate closed-loop pole locations, place computes a gain matrix K such that the state feedback u = –Kx places the closed-loop poles at the locations p. In other words, the eigenvalues of A – BK match the entries of p (up to the ordering).

K = place(A,B,p) places the desired closed-loop poles p by computing a state-feedback gain matrix K. All the inputs of the plant are assumed to be control inputs. The length of p must match the row size of Aplace works for multi-input systems and is based on the algorithm from [1]. This algorithm uses the extra degrees of freedom to find a solution that minimizes the sensitivity of the closed-loop poles to perturbations in A or B.

[K,prec,message] = place(A,B,p) returns prec, an estimate of how closely the eigenvalues of A – BK match the specified locations p (prec measures the number of accurate decimal digits in the actual closed-loop poles). If some nonzero closed-loop pole is more than 10% off from the desired location, message contains a warning message.

You can also use place for estimator gain selection by transposing the A matrix and substituting C' for B.

l = place(A',C',p).'

Examples

Pole Placement Design

Consider a state-space system (a,b,c,d) with two inputs, three outputs, and three states. You can compute the feedback gain matrix needed to place the closed-loop poles at p = [-1 -1.23 -5.0] by

p = [-1 -1.23 -5.0];
K = place(a,b,p)
2. How to design the desired poles? Answer: Choose a suitable value of \omega (bandwith) and \zeta (damping) of the controlling system:

Then use the roots function to input the \omega and \zeta, obtaining the roots (the poles)  as the output.

About the introduction of roots function, I attach a paragraph from Wikipedia here:

The roots function calculates the roots of a single-variable polynomial represented by a vector of coefficients.

For example, create a vector to represent the polynomial x2−x−6, then calculate the roots.

p = [1 -1 -6];
r = roots(p)
r =

     3
    -2

Then with poles and system matrix (A, B), we can calculate the gain k.  


 

最新文章

  1. elasticsearch高级配置一 ---- 分片分布规则设置
  2. python的复制,深拷贝和浅拷贝的区别
  3. 活学活用,webapi HTTPBasicAuthorize搭建小型云应用的实践
  4. WIN7设置wifi热点的方法
  5. C语言sprintf与sscanf函数[总结]
  6. 用sinopia搭建npm私服
  7. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.5.9
  8. 坑爹CF April Fools Day Contest题解
  9. Linux route命令详解和使用示例(查看和操作IP路由表)
  10. CFUUIDRef和CFStringRef-生成唯一标识符
  11. sudo gedit xx warning
  12. 算法导论--python--插入排序
  13. USB 各型插座插头引脚分布
  14. Eclipse 里的 Classpath Variables M2_REPO 无法修改(maven)
  15. Gora_百度百科
  16. PHP开发API接口及使用
  17. C#数组与集合
  18. c++运行时函数
  19. Contest2156 - 2019-3-7 高一noip基础知识点 测试2 题解版
  20. htnl 定位

热门文章

  1. java线程的方便调用方式
  2. C++入门基础知识(一)
  3. ModbusRtu通信报文详解【一】
  4. Ef数据GroupBy多字段查询Vb.net与c#参考
  5. O042、Live Migrate 操作
  6. js小功能3:一个简单的计算器功能
  7. JavaJDBC【四、存储过程的使用】
  8. 基于Scrapt框架的全站数据爬取
  9. 《python解释器源码剖析》第11章--python虚拟机中的控制流
  10. JDBC模拟登陆及SQL语句防注入问题