Mercurial > hg > octave-lyh
diff scripts/control/system/sysout.m @ 7135:8aa770b6c5bf
[project @ 2007-11-08 18:54:10 by jwe]
author | jwe |
---|---|
date | Thu, 08 Nov 2007 18:54:10 +0000 |
parents | 1d0d7be2d0f8 |
children | 5545c1ae9a83 |
line wrap: on
line diff
--- a/scripts/control/system/sysout.m +++ b/scripts/control/system/sysout.m @@ -45,108 +45,112 @@ function retsys = sysout (sys, opt) - if( (nargin < 1) || (nargin > 2) ) + if (nargin < 1 || nargin > 2) print_usage (); endif - if(isempty(sys)) + if (isempty (sys)) retsys = sys; - warning("sysout: empty system") + error ("sysout: empty system") return; endif - if(! isstruct(sys)) - disp("sysout: input must be a system structure") + if (! isstruct (sys)) + error ("sysout: input must be a system structure") endif ## set up output type array - if( nargin == 1 ) - opt = sysgettype(sys); - else - if( ! (strcmp(opt,"ss") + strcmp(opt,"tf") + ... - strcmp(opt,"zp") + strcmp(opt,"all") ) ) - error("opt must be one of [], \"ss\", \"tf\", \"zp\", or \"all\""); - endif + if (nargin == 1) + opt = sysgettype (sys); + elseif (! (strcmp (opt, "ss") || strcmp (opt, "tf") + || strcmp (opt, "zp") || strcmp (opt, "all"))) + error ("opt must be one of [], \"ss\", \"tf\", \"zp\", or \"all\""); endif ## now check output for each form: - [nn,nz,mm,pp] = sysdimensions(sys); - if( mm > 0) - disp("Input(s)") - disp(__outlist__(sysgetsignals(sys,"in")," ")); + [nn, nz, mm, pp] = sysdimensions(sys); + if (mm > 0) + disp ("Input(s)") + disp (__outlist__ (sysgetsignals (sys, "in"), " ")); else - disp("Input(s): none"); + disp ("Input(s): none"); endif if (pp > 0) - disp("Output(s):") - disp(__outlist__(sysgetsignals(sys,"out"), ... - " ",sysgetsignals(sys,"yd")) ); + disp ("Output(s):") + disp (__outlist__ (sysgetsignals (sys, "out"), + " ", sysgetsignals (sys, "yd")) ); else - disp("Output(s): none"); + disp ("Output(s): none"); endif - if(sysgettsam(sys) > 0) - disp(["Sampling interval: ",num2str(sysgettsam(sys))]); + if (sysgettsam (sys) > 0) + disp ("Sampling interval: %g", sysgettsam (sys)); str = "z"; else str = "s"; endif ## transfer function form - if( strcmp(opt,"tf") + strcmp(opt,"all") ) - sys = sysupdate(sys,"tf"); #make sure tf is up to date - disp("transfer function form:") - [num,den] = sys2tf(sys); - tfout(num,den,str); + if (strcmp (opt, "tf") || strcmp (opt, "all")) + sys = sysupdate (sys, "tf"); #make sure tf is up to date + disp ("transfer function form:") + [num, den] = sys2tf (sys); + tfout (num, den, str); endif - if( strcmp(opt,"zp") + strcmp(opt,"all") ) - sys = sysupdate(sys,"zp"); #make sure zp is up to date + if (strcmp(opt, "zp") || strcmp(opt, "all")) + sys = sysupdate (sys, "zp"); #make sure zp is up to date disp("zero-pole form:") - [zer,pol,kk] = sys2zp(sys); - zpout(zer, pol, kk,str) + [zer, pol, kk] = sys2zp (sys); + zpout (zer, pol, kk, str) endif - if( strcmp(opt,"ss") + strcmp(opt,"all") ) - sys = sysupdate(sys,"ss"); - disp("state-space form:"); - disp([num2str(nn)," continuous states, ", num2str(nz)," discrete states"]); - if( nn+nz > 0) - disp("State(s):") + if (strcmp(opt, "ss") || strcmp(opt, "all")) + sys = sysupdate (sys, "ss"); + disp ("state-space form:"); + disp ("%d continuous states, %d discrete states", nn, nz); + if (nn+nz > 0) + disp ("State(s):") xi = (nn+1):(nn+nz); - xd = zeros(1,nn+nz); - if(!isempty(xi)) + xd = zeros (1, nn+nz); + if (! isempty (xi)) xd(xi) = 1; endif - disp(__outlist__(sysgetsignals(sys,"st")," ",xd)); + disp (__outlist__ (sysgetsignals (sys, "st"), " ", xd)); else - disp("State(s): none"); + disp ("State(s): none"); endif ## display matrix values? - dmat = (max( [ (nn+nz), mm, pp ] ) <= 32); + dmat = (max ([nn+nz, mm, pp]) <= 32); - printf("A matrix: %d x %d\n",sysdimensions(sys,"st"), - sysdimensions(sys,"st")); - [aa,bb,cc,dd] = sys2ss(sys); - if(dmat) disp(aa); endif + printf ("A matrix: %d x %d\n", sysdimensions (sys, "st"), + sysdimensions (sys, "st")); + [aa, bb, cc, dd] = sys2ss (sys); + if (dmat) + disp (aa); + endif - printf("B matrix: %d x %d\n",sysdimensions(sys,"st"), - sysdimensions(sys,"in")); - if(dmat) disp(bb); endif + printf ("B matrix: %d x %d\n", sysdimensions (sys, "st"), + sysdimensions (sys, "in")); + if (dmat) + disp (bb); + endif - printf("C matrix: %d x %d\n",sysdimensions(sys,"out"), - sysdimensions(sys,"st")); - if(dmat) disp(cc); endif + printf ("C matrix: %d x %d\n", sysdimensions (sys, "out"), + sysdimensions (sys, "st")); + if (dmat) + disp (cc); + endif - printf("D matrix: %d x %d\n",sysdimensions(sys,"out"), - sysdimensions(sys,"in")); - if(dmat) disp(dd); endif + printf("D matrix: %d x %d\n", sysdimensions (sys, "out"), + sysdimensions (sys, "in")); + if (dmat) + disp (dd); + endif endif if (nargout >= 1) retsys = sys; endif - ## restore global variable - endfunction