怎样求控制器的增益系数k?
步骤:
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
pof desired self-conjugate closed-loop pole locations,placecomputes a gain matrixKsuch that the state feedback u = –Kx places the closed-loop poles at the locationsp. In other words, the eigenvalues of A – BK match the entries ofp(up to the ordering).
K = place(A,B,p)places the desired closed-loop polespby computing a state-feedback gain matrixK. All the inputs of the plant are assumed to be control inputs. The length ofpmust match the row size ofA.placeworks 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)returnsprec, an estimate of how closely the eigenvalues of A – BK match the specified locationsp(precmeasures 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,messagecontains a warning message.You can also use
placefor estimator gain selection by transposing theAmatrix and substitutingC'forB.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 atp = [-1 -1.23 -5.0]byp = [-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
rootsfunction 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.
怎样求控制器的增益系数k?的更多相关文章
- ACM1229_还是A+B(求A的第K位的数公式:A%((int)(pow(10,K)))
#include<stdio.h> #include<math.h> int main() { int A,k,B,sum,c,d; while(scanf("%d% ...
- POJ1741--Tree (树的点分治) 求树上距离小于等于k的点对数
Tree Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12276 Accepted: 3886 Description ...
- 谷歌面试题:输入是两个整数数组,他们任意两个数的和又可以组成一个数组,求这个和中前k个数怎么做?
谷歌面试题:输入是两个整数数组,他们任意两个数的和又可以组成一个数组,求这个和中前k个数怎么做? 分析: "假设两个整数数组为A和B,各有N个元素,任意两个数的和组成的数组C有N^2个元素. ...
- hdu 1588 求f(b) +f(k+b) +f(2k+b) +f((n-1)k +b) 之和 (矩阵快速幂)
g(i)=k*i+b; 0<=i<nf(0)=0f(1)=1f(n)=f(n-1)+f(n-2) (n>=2)求f(b) +f(k+b) +f(2*k+b) +f((n-1)*k + ...
- poj 3261 求可重叠的k次最长重复子串
题意:求可重叠的k次最长重复子串的长度 链接:点我 和poj1743差不多 #include<cstdio> #include<iostream> #include<al ...
- 求数列中第K大的数
原创 利用到快速排序的思想,快速排序思想:https://www.cnblogs.com/chiweiming/p/9188984.html array代表存放数列的数组,K代表第K大的数,mid代表 ...
- 求给出第 K个 N位二进制数,该二进制数不得有相邻的“1”
求给出第 K (0 < K < 109) 个 N (0 < N < 44) 位二进制数,该二进制数不得有相邻的"1". 这道题要求给出第 K (0 < ...
- POJ - 3415 Common Substrings(后缀数组求长度不小于 k 的公共子串的个数+单调栈优化)
Description A substring of a string T is defined as: T( i, k)= TiTi+1... Ti+k-1, 1≤ i≤ i+k-1≤| T|. G ...
- 快速求1~n的k!,k的逆元
1.求1~n的k! 2.求inv(k!) 3.inv((k-1)!)=inv(k!)*k%mod 4.inv(k)=inv(k!)*((k-1)!)%mod 如 https://www.cnblogs ...
随机推荐
- vi/vim 编辑、搜索、查找、定位
介绍vi/vim 相关命令,主要涉及:编辑.搜索.查找.定位. 分为两个章节,即常用命令 及 键盘图 一.vi/vim常用命令 set nu 显示行号 gg 跳转到文件开头 / 向后搜索 ? 向前搜 ...
- 这周末又参加班里同学生日party,同学父母包场2小时花费大约1000美金左右。
今天班上Claire的生日,邀请了几个小朋友去pump it up.特别特别开心,因为她父母选的时间特别好晚上6-8点小孩子玩疯了以后吃的特别多.
- hive用户自定义函数
一.UDF 1.显示所有函数:show functions ; 2.显示指定函数的帮助:$hive>desc function current_database(); 3. 什么是 UDF? 当 ...
- vue的使用与安装 npm -v报错
1.先将node从官方文档下载下来,然后进行安装. 安装成功后,在dos命令中node -v.npm -v来测试,如果成功就可以安装cnpm(国内淘宝镜像比较快).这里我遇到一个bug,npm -v压 ...
- JS的 delete操作符 删除对象属性
JS如何删除对象中的某一属性 var obj={ name: 'zhagnsan', age: 19 } delete obj.name //true typeof obj.name //undefi ...
- javascript的隐式类型转换(使(a==1&&a==2&&a==3) 成立)
一些团队规定禁用 == 运算符换用=== 严格相等.以工程标准衡量,== 带来的便利性抵不上其带来的成本,团队协作时候你看到别人代码中的 ==,有些时候需要判断清楚作者的代码意图是确实需要转型,还是无 ...
- Asp.Net Server.MapPath()用法
做了一个上传文件的功能 本地测试没问题 部署到服务器之后 一直报错 由于 某些历史原因 看不到错误信息 最后发现是路径的问题 其实这么简单的问题 最早该想到的 ...... Server.MapPat ...
- ceres for Android 太慢的解决方法
跨平台编译了ceres,结果在android平台上运行的太慢,优化一次要0.3秒左右,时不时要一两秒.这太扯了.没辙了,在google上瞎搜索,看到 Jacobian evaluation is ve ...
- deep_learning_Function_numpy_random.normal()
numpy常用函数之random.normal函数 np.random.normal(loc=0.0, scale=1.0, size=None) 作用: 生成高斯分布的概率密度随机数 loc:f ...
- python面向编程: 常用模块补充与面向对象
一.常用模块 1.模块 的用用法 模块的相互导入 绝对导入 从sys.path (项目根目录)开始的完整路径 相对导入 是指相对于当前正在执行的文件开始的路径 只能用于包内模块相互间导入 不能超过顶层 ...