K = place(A, B, p)
[K, prec] = place(A, B, p)
[K, prec, message] = place(A, B, p)
| Parameter | Description |
|---|---|
| A | State matrix: Nx-by-Nx matrix. |
| B | Input-to-state matrix: Nx-by-Nu matrix. |
| p | Desired closed-loop pole location vector of length Nx. |
| Parameter | Description |
|---|---|
| K | Feedback gain matrix: Nu-by-Nx matrix. |
| prec | Estimated accuracy of the assigned poles, expressed as an approximate number of accurate decimal digits. |
| message | Warning message returned when one or more poles could not be placed to the requested accuracy (empty otherwise). |
The function place computes the feedback gain matrix K such that the closed-loop poles of A - B*K are the entries of the vector p, i.e. p = eig(A - B*K).
Unlike acker, which is restricted to single-input systems, place supports multi-input models (B with several columns) and selects the closed-loop eigenvectors so that the assignment is as insensitive as possible to perturbations.
Complex desired poles must be supplied in conjugate pairs. The multiplicity of any pole cannot exceed the rank of B. For real A, B and p, the resulting gain K is real.
The algorithm is the rank-one update method described in J. Kautsky, N. K. Nichols and P. Van Dooren, "Robust pole assignment in linear state feedback", International Journal of Control, vol. 41, no. 5, pp. 1129-1155, 1985.
A = [-0.5 0 0; 0 -2 10; 0 1 -2];
B = [1 0; 0 0; 0 1];
p = [-3; -5; -7];
[K, prec] = place(A, B, p)
eig(A - B * K)
| Version | Description |
|---|---|
| 2.0.0 | initial version |