From: <par...@us...> - 2010-10-01 22:44:02
|
Revision: 7792 http://octave.svn.sourceforge.net/octave/?rev=7792&view=rev Author: paramaniac Date: 2010-10-01 22:43:56 +0000 (Fri, 01 Oct 2010) Log Message: ----------- control: support descriptor models Modified Paths: -------------- trunk/octave-forge/main/control/inst/estim.m trunk/octave-forge/main/control/inst/kalman.m Modified: trunk/octave-forge/main/control/inst/estim.m =================================================================== --- trunk/octave-forge/main/control/inst/estim.m 2010-10-01 22:27:33 UTC (rev 7791) +++ trunk/octave-forge/main/control/inst/estim.m 2010-10-01 22:43:56 UTC (rev 7792) @@ -1,4 +1,4 @@ -## Copyright (C) 2009 Lukas F. Reichlin +## Copyright (C) 2009 - 2010 Lukas F. Reichlin ## ## This file is part of LTI Syncope. ## @@ -43,7 +43,7 @@ ## Author: Lukas Reichlin <luk...@gm...> ## Created: November 2009 -## Version: 0.1 +## Version: 0.2 function est = estim (sys, l, sensors = [], known = []) @@ -55,7 +55,7 @@ error ("estim: first argument must be an LTI system"); endif - [a, b, c, d, tsam] = ssdata (sys); + [a, b, c, d, e, tsam] = dssdata (sys, []); if (isempty (sensors)) sensors = 1 : rows (c); @@ -73,8 +73,9 @@ g = [b - l*d, l]; h = [c; eye(n)]; j = [d, zeros(p, p); zeros(n, m), zeros(n, p)]; + ## k = e; - est = ss (f, g, h, j, tsam); + est = dss (f, g, h, j, e, tsam); ## TODO: inname, stname, outname Modified: trunk/octave-forge/main/control/inst/kalman.m =================================================================== --- trunk/octave-forge/main/control/inst/kalman.m 2010-10-01 22:27:33 UTC (rev 7791) +++ trunk/octave-forge/main/control/inst/kalman.m 2010-10-01 22:43:56 UTC (rev 7792) @@ -68,7 +68,7 @@ ## Author: Lukas Reichlin <luk...@gm...> ## Created: November 2009 -## Version: 0.2 +## Version: 0.3 function [est, k, x] = kalman (sys, q, r, s = [], sensors = [], known = []) @@ -78,7 +78,7 @@ print_usage (); endif - [a, b, c, d] = ssdata (sys); + [a, b, c, d, e] = dssdata (sys, []); if (isempty (sensors)) sensors = 1 : rows (c); @@ -95,14 +95,14 @@ rbar = r + h*q*h.'; sbar = g * q*h.'; else - rbar = r + h*s + s.'*h.' + h*q*h.'; + rbar = r + h*q*h.'+ h*s + s.'*h.'; sbar = g * (q*h.' + s); endif if (isct (sys)) - [x, l, k] = care (a.', c.', g*q*g.', rbar, sbar); + [x, l, k] = care (a.', c.', g*q*g.', rbar, sbar, e.'); else - [x, l, k] = dare (a.', c.', g*q*g.', rbar, sbar); + [x, l, k] = dare (a.', c.', g*q*g.', rbar, sbar, e.'); endif k = k.'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |