% STRING writes a command string that can be used to recreate the input pz object.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% DESCRIPTION: STRING writes a command string that can be used to recreate
%              the input pz object.
%
% CALL:        cmd = string(pz)
%
% VERSION:     $Id: string.m,v 1.10 2011/02/18 16:48:54 ingo Exp $
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function varargout = string(varargin)
  
  p = utils.helper.collect_objects(varargin(:), 'pz');
  
  cmd = '';
  for j=1:numel(p)
    
    fstr = num2str(p(j).f, 20);
    qstr = num2str(p(j).q, 20);
    
    % Create from 'f' and 'q'
    pzstr = ['pz(' fstr ',' qstr ') '];
    
    test = eval(pzstr);
    
    % Check if the precision of 'f' and 'q' are high enough
    if ~eq(test, p(j))
      % Create from ri
      pzstr = ['pz(plist(''ri'', ' mat2str(p(j).ri, 20) ')) '];
    end
    
    cmd = [cmd pzstr];
    
  end
  
  %%% Wrap the command only with brackets if the there are more than one object
  if numel(p) > 1
    cmd = ['[' cmd(1:end-1) ']'];
  end
  
  % set output
  varargout{1} = cmd;
end

