From: <par...@us...> - 2012-05-10 13:18:52
|
Revision: 10400 http://octave.svn.sourceforge.net/octave/?rev=10400&view=rev Author: paramaniac Date: 2012-05-10 13:18:41 +0000 (Thu, 10 May 2012) Log Message: ----------- control: tf2ss conversion: do not expand fractions for single-input models and those with equal denominators in a row Modified Paths: -------------- trunk/octave-forge/main/control/inst/@tf/__sys2ss__.m Modified: trunk/octave-forge/main/control/inst/@tf/__sys2ss__.m =================================================================== --- trunk/octave-forge/main/control/inst/@tf/__sys2ss__.m 2012-05-10 12:09:11 UTC (rev 10399) +++ trunk/octave-forge/main/control/inst/@tf/__sys2ss__.m 2012-05-10 13:18:41 UTC (rev 10400) @@ -1,4 +1,4 @@ -## Copyright (C) 2009, 2011 Lukas F. Reichlin +## Copyright (C) 2009, 2011, 2012 Lukas F. Reichlin ## ## This file is part of LTI Syncope. ## @@ -24,7 +24,7 @@ ## Special thanks to Vasile Sima and Andras Varga for their advice. ## Author: Lukas Reichlin <luk...@gm...> ## Created: October 2009 -## Version: 0.3.1 +## Version: 0.4 function [retsys, retlti] = __sys2ss__ (sys) @@ -81,13 +81,20 @@ denc = cell (p, 1); ## multiply all denominators in a row and - ## update each numerator accordingly + ## update each numerator accordingly + ## except for single-input models and those + ## with equal denominators in a row for i = 1 : p - denc(i) = __conv__ (den{i,:}); - for j = 1 : m - idx = setdiff (1:m, j); - numc(i,j) = __conv__ (num{i,j}, den{i,idx}); - endfor + if (m == 1 || isequal (den{i,:})) + denc(i) = den{i,1}; + numc(i,:) = num{i,:}; + else + denc(i) = __conv__ (den{i,:}); + for j = 1 : m + idx = setdiff (1:m, j); + numc(i,j) = __conv__ (num{i,j}, den{i,idx}); + endfor + endif endfor len_numc = cellfun (@length, numc); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |