Mercurial > octave-nkf
diff scripts/control/base/lqr.m @ 7126:4a375de63f66
[project @ 2007-11-08 03:44:14 by jwe]
author | jwe |
---|---|
date | Thu, 08 Nov 2007 03:44:15 +0000 |
parents | a1dbe9d80eee |
children |
line wrap: on
line diff
--- a/scripts/control/base/lqr.m Thu Nov 08 02:29:24 2007 +0000 +++ b/scripts/control/base/lqr.m Thu Nov 08 03:44:15 2007 +0000 @@ -119,7 +119,7 @@ ## disp("lqr: entry"); - if ((nargin != 4) && (nargin != 5)) + if (nargin != 4 && nargin != 5) error ("lqr: invalid number of arguments"); endif @@ -135,19 +135,19 @@ endif ## Check q. - if ( ((n1 = issquare (q)) == 0) || (n1 != n)) + if ((n1 = issquare (q)) == 0 || n1 != n) error ("lqr: q must be square and conformal with a"); endif ## Check r. - if ( ((m1 = issquare(r)) == 0) || (m1 != m)) + if ((m1 = issquare(r)) == 0 || m1 != m) error ("lqr: r must be square and conformal with column dimension of b"); endif ## Check if n is there. if (nargin == 5) [n1, m1] = size (s); - if ( (n1 != n) || (m1 != m)) + if (n1 != n || m1 != m) error ("lqr: z must be identically dimensioned with b"); endif @@ -162,7 +162,7 @@ ## Check that q, (r) are symmetric, positive (semi)definite - if (issymmetric (q) && issymmetric (r) ... + if (issymmetric (q) && issymmetric (r) && all (eig (q) >= 0) && all (eig (r) > 0)) p = are (ao, (b/r)*b', qo); k = r\(b'*p + s'); @@ -171,5 +171,4 @@ error ("lqr: q (r) must be symmetric positive (semi) definite"); endif - ## disp("lqr: exit"); endfunction