Mercurial > octave-nkf
diff scripts/control/system/zp2tf.m @ 7125:f084ba47812b
[project @ 2007-11-08 02:29:23 by jwe]
author | jwe |
---|---|
date | Thu, 08 Nov 2007 02:29:24 +0000 |
parents | a1dbe9d80eee |
children | 59dcf01bb3e3 |
line wrap: on
line diff
--- a/scripts/control/system/zp2tf.m Thu Nov 08 01:09:44 2007 +0000 +++ b/scripts/control/system/zp2tf.m Thu Nov 08 02:29:24 2007 +0000 @@ -37,18 +37,22 @@ function [num, den] = zp2tf (zer, pol, k) + if (nargin != 3) + print_usage (); + endif + ## Find out whether data was entered as a row or a column vector and ## convert to a column vector if necessary. - [rp,cp] = size(pol); - [rz,cz] = size(zer); + [rp, cp] = size (pol); + [rz, cz] = size (zer); - if(!(isvector(zer) | isempty(zer)) ) - error(sprintf("zer(%dx%d) must be a vector",rz,cz)); - elseif(!(isvector(pol) | isempty(pol)) ) - error(sprintf("pol(%dx%d) must be a vector",rp,cp)); - elseif(length(zer) > length(pol)) - error(sprintf("zer(%dx%d) longer than pol(%dx%d)",rz,cz,rp,cp)); + if (! (isvector (zer) || isempty (zer))) + error ("zer(%dx%d) must be a vector", rz, cz); + elseif(! (isvector (pol) || isempty (pol))) + error ("pol(%dx%d) must be a vector", rp, cp); + elseif (length (zer) > length (pol)) + error ("zer(%dx%d) longer than pol(%dx%d)", rz, cz, rp, cp); endif ## initialize converted polynomials @@ -58,18 +62,24 @@ ## call __zp2ssg2__ if there are complex conjugate pairs left, otherwise ## construct real zeros one by one. Repeat for poles. - while(!isempty(zer)) - if( max(abs(imag(zer))) ) [poly, zer] = __zp2ssg2__ (zer); - else poly = [1, -zer(1)]; - zer = zer(2:length(zer)); endif - num = conv(num,poly); + while(! isempty (zer)) + if (max (abs (imag (zer)))) + [poly, zer] = __zp2ssg2__ (zer); + else + poly = [1, -zer(1)]; + zer = zer(2:length(zer)); + endif + num = conv (num, poly); endwhile - while(!isempty(pol)) - if( max(abs(imag(pol))) ) [poly, pol] = __zp2ssg2__ (pol); - else poly = [1, -pol(1)]; - pol = pol(2:length(pol)); endif - den = conv(den,poly); + while (! isempty (pol)) + if (max (abs (imag (pol)))) + [poly, pol] = __zp2ssg2__ (pol); + else + poly = [1, -pol(1)]; + pol = pol(2:length(pol)); + endif + den = conv (den, poly); endwhile endfunction