Mercurial > hg > octave-nkf
view scripts/control/zpout.m @ 3229:28aba52a2368
[project @ 1998-12-10 03:06:31 by jwe]
author | jwe |
---|---|
date | Thu, 10 Dec 1998 03:06:32 +0000 |
parents | dbcc24961c44 |
children | 6dd06d525de6 |
line wrap: on
line source
# Copyright (C) 1996 A. Scottedward Hodel # # This file is part of Octave. # # Octave is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2, or (at your option) any # later version. # # Octave is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # You should have received a copy of the GNU General Public License # along with Octave; see the file COPYING. If not, write to the Free # Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. function zpout(zer,pol,k,x) # # usage: zpout(zer,pol,k,[,x]) # # print formatted zero-pole form # to the screen # x defaults to the string "s" # # SEE ALSO: polyval, polyvalm, poly, roots, conv, deconv, residue, # filter, polyderiv, polyinteg, polyout # Written by A. Scottedward Hodel (scotte@eng.auburn.edu) June 1995) save_val = implicit_str_to_num_ok; save_empty = empty_list_elements_ok; empty_list_elements_ok = 1; implicit_str_to_num_ok = 1; if (nargin < 3 ) | (nargin > 4) | (nargout != 0 ) usage("zpout(zer,pol,k[,x])"); endif if( !(is_vector(zer) | isempty(zer)) | !(is_vector(pol) | isempty(pol)) ) error("zer, pol must be vectors or empty"); endif if(!is_scalar(k)) error("zpout: argument k must be a scalar.") endif if (nargin == 3) x = 's'; elseif( ! isstr(x) ) error("zpout: third argument must be a string"); endif numstring = num2str(k); if(length(zer)) # find roots at z,s = 0 nzr = sum(zer == 0); if(nzr) if(nzr > 1) numstring = [numstring,sprintf(" %s^%d",x,nzr)]; else numstring = [numstring,sprintf(" %s",x)]; endif endif zer = sortcom(-zer); for ii=1:length(zer) if(zer(ii) != 0) numstring = [numstring,sprintf(" (%s %s)",x,com2str(zer(ii),1) ) ]; endif endfor endif if(length(pol)) # find roots at z,s = 0 nzr = sum(pol == 0); if(nzr) if(nzr > 1) denomstring = [sprintf("%s^%d",x,nzr)]; else denomstring = [sprintf("%s",x)]; endif else denomstring = " "; endif pol = sortcom(-pol); for ii=1:length(pol) if(pol(ii) != 0) denomstring = [denomstring,sprintf(" (%s %s)",x,com2str(pol(ii),1))]; endif endfor endif len = max(length(numstring),length(denomstring)); if(len > 0) y = strrep(blanks(len)," ","-"); disp(numstring) if(length(denomstring)) disp(y) disp(denomstring) endif else error('zpout: empty transfer function') end implicit_str_to_num_ok = save_val; empty_list_elements_ok = save_empty; endfunction