Index: mttroot/mtt/bin/trans/sm_r2m ================================================================== --- mttroot/mtt/bin/trans/sm_r2m +++ mttroot/mtt/bin/trans/sm_r2m @@ -12,10 +12,13 @@ ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ +## Revision 1.7 1998/06/23 19:18:33 peterg +## Added optional state argument. +## # Revision 1.6 1997/02/24 14:43:21 peterg # Now ignores parameters that are numerical. # ## Revision 1.5 1996/09/12 18:34:44 peter ## Back under rcs. @@ -39,83 +42,48 @@ echo Creating $1_sm.m # Remove the old log file rm -f sm_r2m.log +#Header +lang_header $1 sm m '' '[mtta,mttb,mttc,mttd]' >$1_sm.m + # Use reduce to accomplish the transformation -reduce >sm_r2m.log << EOF +$SYMBOLIC >sm_r2m.log << EOF %Read in the definitions file IN "$1_def.r"; %Read the reduce state-space A,B,C and D matrices file IN "$1_sm.r"; -%Set up the number of argument variables to zero in case the user has forgotten -MTTNVar := 0; - %Read in the parameter file IN "$1_sympar.r"; - -OUT "$1_sm.m"; -%Headings - Matlab style -%(Note. The ;; are deleted by for2mat) - -write "function [A,B,C,D] = $1_sm(x);;"; -write "%function [A,B,C,D] = $1_sm(x);;"; - -write "%Linearised state matrices for system $1"; -write "%File $1_sm.m"; -write "%Generated by MTT"; - -IF MTTNvar>0 THEN -BEGIN - write "% Set the parameters"; - write "global ...;;"; - FOR i := 1:MTTNvar DO - BEGIN - IF numberp(MTTVar(i,1)) - THEN - BEGIN - % Do nowt - END - ELSE - BEGIN - write MTTVar(i,1), " ..."; - END; - END; - write " "; -END; - -write "% Set the state (if given as an argument)"; -write "if nargin>0"; -FOR i := 1:MTTNx DO - write " mttx -", i, " = x(", i, ");"; -write "end;"; - -write ""; - +OUT "$1_sm.m1"; %Fortran switches - one line expressions OFF echo; ON fort$ cardno!* := 1$ fortwidth!* := 100$ OFF period$ -write "MTTA = zeros(", MTTNx, ",", MTTNx, ");"; -write "MTTB = zeros(", MTTNx, ",", MTTNu, ");"; -write "MTTC = zeros(", MTTNy, ",", MTTNx, ");"; -write "MTTD = zeros(", MTTNy, ",", MTTNu, ");"; +write "mtta = zeros(", MTTNx, ",", MTTNx, ");"; +write "mttb = zeros(", MTTNx, ",", MTTNu, ");"; +write "mttc = zeros(", MTTNy, ",", MTTNx, ");"; +write "mttd = zeros(", MTTNy, ",", MTTNu, ");"; ON NERO; % Suppress zero elements. -MTTA := MTTA; -MTTB := MTTB; -MTTC := MTTC; -MTTD := MTTD; +mtta := mtta; +mttb := mttb; +mttc := mttc; +mttd := mttd; OFF FORT; write ""; -SHUT "$1_sm.m"; +SHUT "$1_sm.m1"; +EOF + +cat $1_sm.m1 >> $1_sm.m +#rm -f $1_sm.m1