Index: mttroot/mtt/bin/trans/dm2fr_m ================================================================== --- mttroot/mtt/bin/trans/dm2fr_m +++ mttroot/mtt/bin/trans/dm2fr_m @@ -2,11 +2,11 @@ ###################################### ##### Model Transformation Tools ##### ###################################### -# Bourne shell script: dm2fr_m2dat +# Bourne shell script: dm2fr_m # Transformation: descriptor matrix to frequency response # Copyright (c) P.J.Gawthrop, 1996. @@ -13,46 +13,84 @@ ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ +## Revision 1.3 1996/08/11 19:08:08 peter +## Parameter passing now enabled. +## ## Revision 1.2 1996/08/11 09:32:12 peter ## Now takes the numpar parameters correctly ## ## Revision 1.1 1996/08/10 14:11:11 peter ## Initial revision ## ############################################################### -echo Creating $1_fr.dat +echo Creating $1_fr.m +echo Creating $1_lmfr.m +echo Creating $1_lpfr.m +echo Creating $1_nyfr.m +echo Creating $1_nifr.m if [ "$2" = "" ]; then - PARAMS='w=logspace(-1,2,100);' + PARAMS='w=logspace(-1,2,100); u0=ones(nu,1);' echo Using default parameter $PARAMS else PARAMS=$2; fi - echo $PARAMS +$MATRIX << EOF > dm2fr_m.log + + [nx,ny,nu,nz,nyz] = $1_def; + $PARAMS + + %Defaults + if exist('w')==0 + w = logspace(-1,2,100); + end; -$MATRIX << EOF | awk '$1 !~ /[A-Za-cf-z]/ && NF>0 {print} ' >$1_fr.dat + if exist('u0')==0 + u0 = ones(nu,1); + end; - $PARAMS; + [n,m]=size(w); + if m>n + w=w'; + end; [A,B,C,D,E] = $1_dm($1_numpar); - fr = dm2fr(A,B,C,D,E,w); - - rfr = real(fr); - ifr = imag(fr); - - [Ny,Nu]=size(D); - NN = Ny*Nu; - - xy = [rfr(:,1), ifr(:,1)]; - for i=2:NN - xy = [xy rfr(:,i) ifr(:,i)]; - end; -xy + fr = dm2fr(A,B,C,D,E,w,u0); + lw = log10(w); + lmfr = log10(abs(fr)); + pfr = angle(fr)*180/pi; + +% Complex frequency response + write_matrix([w fr], '$1_fr'); + +% Log magnitude v log frequency + write_matrix([lw lmfr], '$1_lmfr'); + +% Angle v log frequency + write_matrix([lw pfr], '$1_lpfr'); + +% Nyquist style + re = real(fr); + im = imag(fr); + nyq = [re(:,1) im(:,1)]; + for i = 2:ny + nyq = [nyq re(:,i) im(:,i)] + end; + write_matrix(nyq, '$1_nyfr'); + +% Nichols style + re = lw; + im = pfr; + nic = [im(:,1) re(:,1)]; + for i = 2:ny + nic = [nic im(:,i) re(:,i)] + end; + write_matrix(nic, '$1_nifr'); EOF