SQLITE_NOTICE(283): recovered 5 frames from WAL file /data/mtt.fossil-wal
File mttroot/mtt/bin/trans/dm2fr_m artifact 646c7cb58f part of check-in 86bbc7c15d
#! /bin/sh ###################################### ##### Model Transformation Tools ##### ###################################### # Bourne shell script: dm2fr_m # Transformation: descriptor matrix to frequency response # Copyright (c) P.J.Gawthrop, 1996. ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.7 1996/08/24 14:23:00 peter ## Global parameter passing. ## Proper error handling. # ## Revision 1.6 1996/08/16 14:26:07 peter ## Fixed multi-output bug. ## Made sure that u0 is ok. ## ## Revision 1.5 1996/08/15 16:23:02 peter ## Now uses W in place of w for consistancy with time responses. ## ## Revision 1.4 1996/08/15 11:52:42 peter ## Now creats a number of versions: ## fr complex frequency response ## lmfr log magnitude of fr ## lpfr phase of fr ## nyfr real and imag parts - Nyquist style ## nifr Nichols style. ## ## 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.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); u0=zeros(nu,1); u0(1)=1;' echo Using default parameter $PARAMS else PARAMS=$2; fi $MATRIX << EOF > dm2fr_m.log 2>mtt_error $1_numpar; [nx,ny,nu,nz,nyz] = $1_def; $PARAMS %Defaults if exist('W')==0 W = logspace(-1,2,100)'; end; if exist('u0')==0 u0 = zeros(nu,1); u0(1) = 1; end; [n,m]=size(W); if m>n W=W'; end; [A,B,C,D,E] = $1_dm; 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 = lmfr; im = pfr; nic = [im(:,1) re(:,1)]; for i = 2:ny nic = [nic im(:,i) re(:,i)] end; write_matrix(nic, '$1_nifr'); EOF # Now invoke the standard error handling. mtt_error_r dae2dm_r.log