From: <par...@us...> - 2012-04-30 15:57:28
|
Revision: 10335 http://octave.svn.sourceforge.net/octave/?rev=10335&view=rev Author: paramaniac Date: 2012-04-30 15:57:22 +0000 (Mon, 30 Apr 2012) Log Message: ----------- control-devel: add arx function Added Paths: ----------- trunk/octave-forge/extra/control-devel/inst/arx.m Added: trunk/octave-forge/extra/control-devel/inst/arx.m =================================================================== --- trunk/octave-forge/extra/control-devel/inst/arx.m (rev 0) +++ trunk/octave-forge/extra/control-devel/inst/arx.m 2012-04-30 15:57:22 UTC (rev 10335) @@ -0,0 +1,36 @@ +## Author: Lukas Reichlin <luk...@gm...> +## Created: April 2012 +## Version: 0.1 + +function sys = arx (dat, na, nb) + + if (nargin != 3) + print_usage (); + endif + + if (! isa (dat, "iddata")) + error ("arx: "); + endif + + if (! is_real_scalar (na, nb)) + error ("arx: "); + ## Test for integers + endif + + ## TODO: handle MIMO and multi-experiment data + + Y = dat.y{1}; + U = dat.u{1}; + + PhiY = toeplitz ([0; Y(1:end-1, :)], zeros (1, na)); + PhiU = toeplitz ([0; U(1:end-1, :)], zeros (1, nb)); + Phi = [PhiY, PhiU]; + + Theta = Phi \ Y; + + A = Theta(1:n); + B = Theta(n+1:end); + + sys = tf ({B, 1}, {A, A}, dat.tsam); + +endfunction \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |