SQLITE_NOTICE(283): recovered 5 frames from WAL file /data/mtt.fossil-wal
File mttroot/mtt/bin/trans/sm_r2m artifact eeefdfa965 part of check-in 77d4baa7f1
#!/bin/sh ###################################### ##### Model Transformation Tools ##### ###################################### # Bourne shell script: sm_r2m # Reduce constained state-space A,B,C,D and E matrices to Matlab # P.J.Gawthrop July 1990, Feb 1991, May 1991, Sep 91, Dec 93, Jan 94, May 94. # Copyright (c) P.J.Gawthrop, 1989, 1990, 1991, 1993, 1994, 1996. ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ # 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. ## # Revision 1.4 1996/08/24 14:12:26 peter # Global parameter passing. # ## Revision 1.3 1996/08/19 18:38:43 peter ## Read in the numerical params etc ... ## ## Revision 1.2 1996/08/19 16:25:18 peter ## Fixed bug when Nx=0. ## ## Revision 1.1 1996/08/19 15:14:51 peter ## Initial revision ## ############################################################### # Inform user echo Creating $1_sm.m # Remove the old log file rm -f sm_r2m.log # Use reduce to accomplish the transformation reduce >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 ""; %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, ");"; ON NERO; % Suppress zero elements. MTTA := MTTA; MTTB := MTTB; MTTC := MTTC; MTTD := MTTD; OFF FORT; write ""; SHUT "$1_sm.m";