home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / octa21fb.zip / octave / SCRIPTS.ZIP / scripts.fat / control / sys2fir.m < prev    next >
Text File  |  1999-12-24  |  2KB  |  54 lines

  1. ## Copyright (C) 1996 Auburn University.  All Rights Reserved.
  2. ##
  3. ## This file is part of Octave. 
  4. ##
  5. ## Octave is free software; you can redistribute it and/or modify it 
  6. ## under the terms of the GNU General Public License as published by the 
  7. ## Free Software Foundation; either version 2, or (at your option) any 
  8. ## later version. 
  9. ## 
  10. ## Octave is distributed in the hope that it will be useful, but WITHOUT 
  11. ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
  12. ## FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
  13. ## for more details.
  14. ## 
  15. ## You should have received a copy of the GNU General Public License 
  16. ## along with Octave; see the file COPYING.  If not, write to the Free 
  17. ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. 
  18.  
  19. ## -*- texinfo -*-
  20. ## @deftypefn {Function File } {[@var{c}, @var{tsam}, @var{input}, @var{output}] =} sys2fir (@var{sys})
  21. ## 
  22. ## Extract FIR data from system data structure; see @ref{fir2sys} for
  23. ## parameter descriptions.
  24. ## 
  25. ## @end deftypefn
  26.  
  27. ## See also: fir2sys
  28.  
  29. function [c, tsam, inname, outname] = sys2fir (sys)
  30.  
  31.   ## a s hodel July 1996
  32.  
  33.   ## let sys2tf do most of the work
  34.  
  35.   [num,den,tsam,inname,outname] = sys2tf(sys);
  36.  
  37.   alph = den(1);            # scale to get monic denominator
  38.   den = den/alph;
  39.   num = num/alph;
  40.   l = length(den);
  41.   m = length(num);
  42.   if( norm(den(2:l)) )
  43.     sysout(sys,"tf");
  44.     error("denominator has poles away from origin");
  45.   elseif( !is_digit(sys) )
  46.     error("system must be discrete-time to be FIR");
  47.   elseif(m != l)
  48.     warning(["sys2fir: deg(num) - deg(den) = ",num2str(m-l), ...
  49.     "; coefficients must be shifted"]);
  50.   endif
  51.   c = num;
  52. endfunction
  53.  
  54.