ADDED mttroot/mtt/bin/trans/ode2odess_m Index: mttroot/mtt/bin/trans/ode2odess_m ================================================================== --- /dev/null +++ mttroot/mtt/bin/trans/ode2odess_m @@ -0,0 +1,99 @@ +#! /bin/sh + + ###################################### + ##### Model Transformation Tools ##### + ###################################### + +# Bourne shell script: ode2odess_m + +# Transforms descriptor matrix rep to step response + +# Copyright (c) P.J.Gawthrop, 1996. + +############################################################### +## Version control history +############################################################### +## $Id$ +## $Log$ +## Revision 1.4 1996/08/16 13:04:46 peter +## Fixed problem with more than one output (y vector). +## +## Revision 1.3 1996/08/16 06:36:03 peter +## Removed u from default arg list. +## +## Revision 1.2 1996/08/15 16:24:43 peter +## Uses T in place of t to avoid name clash within function. +## +## Revision 1.1 1996/08/15 11:56:38 peter +## Initial revision +## +############################################################### + +echo Creating $1_odess.m +rm -f ode2odess_m.log + +if [ "$2" = "" ]; +then + PARAMS='T=[0:0.1:1]; u=ones(nu,1)*t;' + echo Using default parameter $PARAMS +else + PARAMS=$2; +fi + +PARAMS="$PARAMS ;" + + +$MATRIX << EOF > ode2odess_m.log 2>mtt_error + + %Read in parameters + $1_numpar; + + [nx,ny,nu,nz,nyz] = $1_def; + t=0; %Just in case it appears in the parameter list. + + $PARAMS + + %Defaults + if exist('T')==0 + T=[0:0.1:1] + end; + + if exist('x0')==0 + x0 = zeros(nx,1); + end; + + [n,m]=size(T); + if m>n + T=T'; + end; + +global t; +function dx=f(x) + global t + dx = $1_ode(x,t); +endfunction; + +i=0; +for t=T' + i=i+1; + x(i,:) = fsolve('f',x0)'; +end; + +i=0; +for t=T' + i=i+1; + y(i,:) = $1_odeo(x(i,:),t)'; +end; + +write_matrix([T,x], '$1_odess'); +write_matrix([T,y], '$1_odesso'); + +EOF + +# Now invoke the standard error handling. +mtt_error mtt_error.txt + + + + +