diff options
Diffstat (limited to 'modules/cacsd/macros/sysfact.sci')
-rwxr-xr-x | modules/cacsd/macros/sysfact.sci | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/modules/cacsd/macros/sysfact.sci b/modules/cacsd/macros/sysfact.sci new file mode 100755 index 000000000..d9a824129 --- /dev/null +++ b/modules/cacsd/macros/sysfact.sci @@ -0,0 +1,44 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) INRIA - +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +function [S,Series]=sysfact(Sys,Gain,flag) + //For Sys=[A,B,C,D], + //if flag=='post' returns S = [A+B*Gain, B , Gain, I] + // and Series = minss(Sys*S) + //if flag=='pre' returns S=[A+Gain*C, Gain , C, I] + // and Series = minss(S*Sys) + if flag=="post" then + S=syslin(Sys("dt"),Sys("A")+Sys("B")*Gain, Sys("B"), Gain, eye(Gain*Sys("B"))); + //Series=minss(Sys*S); + Series= syslin("c",Sys("A")+Sys("B")*Gain, Sys("B"), Sys("C")+Sys("D")*Gain, Sys("D")); + end + if flag=="pre" then + S=syslin(Sys("dt"),Sys("A")+Gain*Sys("C"), Gain, Sys("C"), eye(Sys("C")*Gain)); + //Series=minss(S*Sys); + Series=syslin("c",Sys("A")+Gain*Sys("C"), Sys("B")+Gain*Sys("D"), Sys("C"), Sys("D")); + end + + + //Example: + //Sys=ssrand(3,2,4);Sys('D')=rand(3,2); + //S=sysfact(Sys,lqr(Sys),'post'); + //ww=minss(Sys*S); + //ss2tf(gtild(ww)*ww),Sys('D')'*Sys('D') + + //Syst=Sys'; + //S1=sysfact(Syst,lqe(Syst),'pre'); + //ww=minss(S1*Syst); + //ss2tf(ww*gtild(ww)),Syst('D')*Syst('D')' + + + //Sys=ssrand(2,3,4); + //[X,d,F,U,k,Z]=abinv(Sys); + //ss2tf(Sys*Z) + //ss2tf(Sys*sysfact(Sys,F,'post')*U) +endfunction |