Mercurial > forge
changeset 10272:48db51e91ef4 octave-forge
control-devel: get multi-experiment identification working (fingers crossed)
author | paramaniac |
---|---|
date | Fri, 18 May 2012 18:23:28 +0000 |
parents | 2cdd5eed2769 |
children | 4ca415a8e829 |
files | extra/control-devel/devel/ident.m extra/control-devel/src/slident.cc |
diffstat | 2 files changed, 11 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/extra/control-devel/devel/ident.m Fri May 18 16:04:20 2012 +0000 +++ b/extra/control-devel/devel/ident.m Fri May 18 18:23:28 2012 +0000 @@ -46,7 +46,7 @@ % nsmp >= 2*(m+l+1)*nobr - 1 % nobr <= (nsmp+1)/(2*(m+l+1)) %nobr = 10 - [a, b, c, d, q, ry, s, k, x0] = slident (dat.y{1}, dat.u{1}, nobr, n, meth, alg, batch, conct, ctrl, rcond, tol); + [a, b, c, d, q, ry, s, k, x0] = slident (dat.y, dat.u, nobr, n, meth, alg, batch, conct, ctrl, rcond, tol); sys = ss (a, b, c, d, dat.tsam{1});
--- a/extra/control-devel/src/slident.cc Fri May 18 16:04:20 2012 +0000 +++ b/extra/control-devel/src/slident.cc Fri May 18 18:23:28 2012 +0000 @@ -184,10 +184,10 @@ ctrl = 'N'; - int n_exp = y_cell.nelem (); // number of experiments - - int m = u_cell.elem(0).columns (); // m: number of inputs - int l = y_cell.elem(0).columns (); // l: number of outputs + int n_exp = y_cell.nelem (); // number of experiments + int m = u_cell.elem(0).columns (); // m: number of inputs + int l = y_cell.elem(0).columns (); // l: number of outputs + int nsmpl = 0; // total number of samples // arguments out int n; @@ -221,6 +221,7 @@ //int m = u.columns (); // m: number of inputs //int l = y.columns (); // l: number of outputs int nsmp = y.rows (); // nsmp: number of samples + nsmpl += nsmp; // y.rows == u.rows is checked by iddata class // TODO: check minimal nsmp size @@ -448,7 +449,7 @@ char job = 'A'; char jobck = 'K'; - int nsmpl = nsmp; + //int nsmpl = nsmp; if (nsmpl < 2*(m+l)*nobr) error ("slident: nsmpl (%d) < 2*(m+l)*nobr (%d)", nsmpl, nobr); @@ -623,7 +624,7 @@ // TODO: use only one iwork and dwork for all three slicot routines // ldwork = max (ldwork_a, ldwork_b, ldwork_c) - +/* // arguments in char jobx0 = 'X'; char comuse = 'U'; @@ -700,7 +701,7 @@ error_msg ("ident: IB01CD", info_c, 2, err_msg_c); warning_msg ("ident: IB01CD", iwarn_c, 6, warn_msg_c); - +*/ // return values retval(0) = a; @@ -713,7 +714,8 @@ retval(6) = s; retval(7) = k; - retval(8) = x0; + // retval(8) = x0; + retval(8) = octave_value (0); } return retval;