Mercurial > hg > octave-avbm
changeset 3398:0f515bc98460
[project @ 1999-12-18 04:21:28 by jwe]
line wrap: on
line diff
--- a/scripts/control/DEMOcontrol.m +++ b/scripts/control/DEMOcontrol.m @@ -40,7 +40,9 @@ ## @end deftypefn ## Demo programs: bddemo.m, frdemo.m, analdemo.m, moddmeo.m, rldemo.m -## Written by David Clem August 15, 1994 + +## Author: David Clem +## Created: August 15, 1994 function DEMOcontrol ()
--- a/scripts/control/abcddim.m +++ b/scripts/control/abcddim.m @@ -61,9 +61,11 @@ ## See also: is_abcd ## @end deftypefn +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1993. +## a s hodel: modified to accept pure-gain systems aug 1996 + function [n, m, p] = abcddim (a, b, c, d) -## Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993. -## a s hodel: modified to accept pure-gain systems aug 1996 if (nargin != 4) error ("abcddim: four arguments required");
--- a/scripts/control/abcddims.m +++ b/scripts/control/abcddims.m @@ -24,12 +24,15 @@ ## @var{my} and @var{ny} are the row and column dimensions of the result. ## @end deftypefn +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: February 1997 + function [y, my, ny] = abcddims (x) -## Written by A. S. Hodel (scotte@eng.auburn.edu) Feb 1997 y = x; if(isempty(y)) y = []; endif [my,ny] = size(y); + endfunction
--- a/scripts/control/analdemo.m +++ b/scripts/control/analdemo.m @@ -21,9 +21,11 @@ ## Octave Controls toolbox demo: State Space analysis demo ## @end deftypefn +## Author: David Clem +## Created: August 15, 1994 +## Updated by John Ingram December 1996 + function analdemo () -## Written by David Clem August 15, 1994 -## Updated by John Ingram December 1996 while (1) clc
--- a/scripts/control/are.m +++ b/scripts/control/are.m @@ -61,8 +61,10 @@ ## See also: balance, dare +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1993 + function x = are (a, b, c, opt) -## Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993. if (nargin == 3 || nargin == 4) if (nargin == 4)
--- a/scripts/control/bddemo.m +++ b/scripts/control/bddemo.m @@ -21,10 +21,11 @@ ## Octave Controls toolbox demo: Block Diagram Manipulations demo ## @end deftypefn -function bddemo () +## Author: David Clem +## Created: August 15, 1994 +## Modified by A S Hodel Summer-Fall 1996 - ## Written by David Clem August 15, 1994 - ## Modified by A S Hodel Summer-Fall 1996 +function bddemo () sav_page = page_screen_output; page_screen_output = 1;
--- a/scripts/control/bode.m +++ b/scripts/control/bode.m @@ -90,14 +90,14 @@ ## @end enumerate ## @end deftypefn -function [mag_r, phase_r, w_r] = bode (sys, w, outputs, inputs, plot_style) +## Author: John Ingram <ingraje@eng.auburn.edu> +## Created: July 10, 1996 +## Based on previous code by R. Bruce Tenison, July 13, 1994 +## Modified by David Clem November 13, 1994 +## again by A. S. Hodel July 1995 (smart plot range, etc.) +## Modified by Kai P. Mueller September 28, 1997 (multiplot mode) - ## Written by John Ingram July 10th, 1996 - ## Based on previous code - ## By R. Bruce Tenison, July 13, 1994 - ## Modified by David Clem November 13, 1994 - ## again by A. S. Hodel July 1995 (smart plot range, etc.) - ## Modified by Kai P. Mueller September 28, 1997 (multiplot mode) +function [mag_r, phase_r, w_r] = bode (sys, w, outputs, inputs, plot_style) ## check number of input arguments given if (nargin < 1 | nargin > 5)
--- a/scripts/control/buildssic.m +++ b/scripts/control/buildssic.m @@ -19,8 +19,6 @@ ## -*- texinfo -*- ## @deftypefn {Function File } {@var{sys} =} buildssic(@var{Clst}, @var{Ulst}, @var{Olst}, @var{Ilst}, @var{s1}, @var{s2}, @var{s3}, @var{s4}, @var{s5}, @var{s6}, @var{s7}, @var{s8}) ## -## Contributed by Kai Mueller. -## ## Form an arbitrary complex (open or closed loop) system in ## state-space form from several systems. "@code{buildssic}" can ## easily (despite it's cryptic syntax) integrate transfer functions @@ -126,11 +124,12 @@ ## where "One" is a unity gain (auxillary) function with order 0. ## (e.g. @code{One = ugain(1);}) ## @end deftypefn - + +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: April 1998 + function sys = buildssic (Clst, Ulst, Olst, Ilst, s1, s2, s3, s4, s5, s6, s7, s8) - ## Written by Kai Mueller April 1998 - if((nargin < 5) || (nargin > 12)) usage("sys = buildssic(Clst,Ulst,Olst,Ilst,s1,s2,s3,s4,s5,s6,s7,s8)"); endif
--- a/scripts/control/c2d.m +++ b/scripts/control/c2d.m @@ -66,11 +66,11 @@ ## to the names of the new discrete states. ## @end deftypefn -function dsys = c2d (sys, opt, T) +## Author: R. Bruce Tenison <btenison@eng.auburn.edu> +## Created: October 1993 +## Updated by John Ingram for system data structure August 1996 - ## Written by R.B. Tenison (btenison@eng.auburn.edu) - ## October 1993 - ## Updated by John Ingram for system data structure August 1996 +function dsys = c2d (sys, opt, T) ## parse input arguments if(nargin < 1 | nargin > 3)
--- a/scripts/control/controldemo.m +++ b/scripts/control/controldemo.m @@ -18,8 +18,9 @@ ## Controls toolbox demo. ## Demo programs: bddemo.m, frdemo.m, analdemo.m, moddmeo.m, rldemo.m -## -## Written by David Clem August 15, 1994 + +## Author: David Clem +## Created: August 15, 1994 function DEMOcontrol ()
--- a/scripts/control/ctrb.m +++ b/scripts/control/ctrb.m @@ -32,11 +32,11 @@ ## are much better for controllability tests. ## @end deftypefn -function Qs = ctrb (sys, b) +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: November 4, 1997 +## based on is_controllable.m of Scottedward Hodel - ## Written by Kai P. Mueller November 4, 1997 - ## based on is_controllable.m of Scottedward Hodel - ## modified by +function Qs = ctrb (sys, b) if (nargin == 2) a = sys;
--- a/scripts/control/d2c.m +++ b/scripts/control/d2c.m @@ -54,10 +54,12 @@ ## signal names as in @var{sys}). ## @end deftypefn +## Author: R. Bruce Tenison <btenison@eng.auburn.edu> +## Created: August 23, 1994 +## Updated by John Ingram for system data structure August 1996 + function csys = d2c (sys, opt) - ## Written by R. Bruce Tenison August 23, 1994 - ## Updated by John Ingram for system data structure August 1996 ## SYS_INTERNAL accesses members of system data structure if( (nargin != 1) & (nargin != 2) )
--- a/scripts/control/damp.m +++ b/scripts/control/damp.m @@ -28,10 +28,10 @@ ## See also: @code{eig} ## @end deftypefn -function damp (p, tsam) +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: September 29, 1997. - ## Written by Kai P. Mueller September 29, 1997. - ## Update +function damp (p, tsam) ## assume a continuous system DIGITAL = 0;
--- a/scripts/control/dare.m +++ b/scripts/control/dare.m @@ -71,7 +71,7 @@ ## See also: balance, are -## Author: A. S. Hodel <scotte@eng.auburn.edu> +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> ## Created: August 1993 ## Adapted-By: jwe
--- a/scripts/control/dcgain.m +++ b/scripts/control/dcgain.m @@ -24,7 +24,8 @@ ## number of @var{A}-Matrix in @var{sys} (default @var{tol} = 1.0e-10) ## @end deftypefn -## Written by Kai P Mueller (mueller@ifr.ing.tu-bs.de) October 1, 1997 +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: October 1, 1997 function gm = dcgain (sys, tol)
--- a/scripts/control/dezero.m +++ b/scripts/control/dezero.m @@ -23,6 +23,7 @@ ## Author: Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at> ## Adapted-By: jwe + ## Adapted from deblank by A. S. Hodel (a.s.hodel@eng.auburn.edu) ## (the name dezero is a reference to the Fermilab D0 experiment, ## where my sister did her PhD research)
--- a/scripts/control/dgkfdemo.m +++ b/scripts/control/dgkfdemo.m @@ -21,7 +21,8 @@ ## Octave Controls toolbox demo: H2/Hinfinity options demos ##@end deftypefn -## Written by A. S. Hodel June 1995 +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: June 1995 function dgkfdemo ()
--- a/scripts/control/dgram.m +++ b/scripts/control/dgram.m @@ -39,9 +39,10 @@ ## ## @end deftypefn -function m = dgram (a, b) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 1995 - ## Written by A. S. Hodel July 1995 +function m = dgram (a, b) ## let dlyap do the error checking... m = dlyap(a,b*b');
--- a/scripts/control/dhinfdemo.m +++ b/scripts/control/dhinfdemo.m @@ -1,4 +1,4 @@ -## Copyright (C) 1996, 1998 Kai Mueller +## Copyright (C) 1996, 1998 Kai P. Mueller ## ## This file is part of Octave. ##
--- a/scripts/control/dlqe.m +++ b/scripts/control/dlqe.m @@ -95,11 +95,13 @@ ## @end table ## @end deftypefn -function [l, m, p, e] = dlqe (a, g, c, sigw, sigv, s) -## Written by A. S. Hodel (scotte@eng.auburn.edu) August, 1993. +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1993 ## Modified for discrete time by R. Bruce Tenison (btenison@eng.auburn.edu) ## October, 1993 +function [l, m, p, e] = dlqe (a, g, c, sigw, sigv, s) + if (nargin != 5 && nargin != 6) error ("dlqe: invalid number of arguments"); endif
--- a/scripts/control/dlqg.m +++ b/scripts/control/dlqg.m @@ -43,9 +43,10 @@ ## ## See also: lqg, dlqe, dlqr -function [K, Q, P, Ee, Er] = dlqg (A, B, C, G, Sigw, Sigv, Q, R) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1995 - ## Written by A. S. Hodel August 1995 +function [K, Q, P, Ee, Er] = dlqg (A, B, C, G, Sigw, Sigv, Q, R) warning("dlqg: obsolete. use lqg instead (system data structure format)");
--- a/scripts/control/dlqr.m +++ b/scripts/control/dlqr.m @@ -104,11 +104,13 @@ ## @end enumerate ## @end deftypefn -function [k, p, e] = dlqr (a, b, q, r, s) -## Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993. +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1993 ## Converted to discrete time by R. B. Tenison ## (btenison@eng.auburn.edu) October 1993 +function [k, p, e] = dlqr (a, b, q, r, s) + if (nargin != 4 && nargin != 5) error ("dlqr: invalid number of arguments"); endif
--- a/scripts/control/dlyap.m +++ b/scripts/control/dlyap.m @@ -60,9 +60,10 @@ ## ## @end deftypefn -function x = dlyap (a, b) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1993 - ## Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993. +function x = dlyap (a, b) if ((n = is_square (a)) == 0) warning ("dlyap: a must be square");
--- a/scripts/control/dmr2d.m +++ b/scripts/control/dmr2d.m @@ -70,9 +70,9 @@ ## ## @end deftypefn -function [dsys, fidx] = dmr2d (sys, idx, sprefix, Ts2, cuflg) +## Adapted from c2d by a.s.hodel@eng.auburn.edu - ## Adapted from c2d by a.s.hodel@eng.auburn.edu +function [dsys, fidx] = dmr2d (sys, idx, sprefix, Ts2, cuflg) ## parse input arguments if(nargin != 4 | nargout > 2)
--- a/scripts/control/fir2sys.m +++ b/scripts/control/fir2sys.m @@ -67,12 +67,13 @@ ## @end example ## @end deftypefn -function sys = fir2sys (num, tsam, inname, outname) +## Author: R. Bruce Tenison <btenison@eng.auburn.edu> +## Created: July 29, 1994 +## Name changed to TF2SYS July 1995 +## updated for new system data structure format July 1996 +## adapted from tf2sys july 1996 - ## Written by R. Bruce Tenison July 29, 1994 - ## Name changed to TF2SYS July 1995 - ## updated for new system data structure format July 1996 - ## adapted from tf2sys july 1996 +function sys = fir2sys (num, tsam, inname, outname) ## Test for the correct number of input arguments if (nargin < 1 | nargin > 4)
--- a/scripts/control/frdemo.m +++ b/scripts/control/frdemo.m @@ -21,12 +21,12 @@ ## Octave Controls toolbox demo: Frequency Response demo ## @end deftypefn -function frdemo () +## Author: David Clem +## Created: August 15, 1994 +## a s hodel: updated to match new order of ss2zp outputs +## J Ingram: updated for system data structure format August 1996 - ## Written by David Clem August 15, 1994 - - ## a s hodel: updated to match new order of ss2zp outputs - ## J Ingram: updated for system data structure format August 1996 +function frdemo () disp("") clc
--- a/scripts/control/freqchkw.m +++ b/scripts/control/freqchkw.m @@ -22,9 +22,10 @@ ## Returns boolean value. ## @end deftypefn -function USEW = freqchkw (w) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 1996 - ## A S Hodel July 1996 +function USEW = freqchkw (w) if(isempty(w)) USEW = 0;
--- a/scripts/control/freqresp.m +++ b/scripts/control/freqresp.m @@ -39,9 +39,11 @@ ## @end table ## @end deftypefn +## Author: R. Bruce Tenison <btenison@eng.auburn.edu> +## Created: July 11, 1994 + function [ff, w] = freqresp (sys, USEW, w); - ## Written by: R. Bruce Tenison July 11, 1994 ## SYS_INTERNAL accesses members of system data structure save_val = empty_list_elements_ok;
--- a/scripts/control/gram.m +++ b/scripts/control/gram.m @@ -24,7 +24,7 @@ ## @var{m} satisfies @math{ a m + m a' + b b' = 0 }. ## @end deftypefn -## Written by A. S. Hodel +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> function m = gram (a, b)
--- a/scripts/control/h2norm.m +++ b/scripts/control/h2norm.m @@ -25,10 +25,11 @@ ## H2 and Hinf Control Problems", IEEE TAC August 1989 ## @end deftypefn -function h2gain = h2norm (sys) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1995 +## updated for system data structure by John Ingram November 1996 - ## A. S. Hodel Aug 1995 - ## updated for system data structure by John Ingram November 1996 +function h2gain = h2norm (sys) if((nargin != 1)) usage("h2gain = h2norm(sys)");
--- a/scripts/control/h2syn.m +++ b/scripts/control/h2syn.m @@ -58,9 +58,9 @@ ## @end table ## @end deftypefn -function [K, gain, Kc, Kf, Pc, Pf] = h2syn (Asys, nu, ny, tol) +## Updated for System structure December 1996 by John Ingram - ## Updated for System structure December 1996 by John Ingram +function [K, gain, Kc, Kf, Pc, Pf] = h2syn (Asys, nu, ny, tol) if ((nargin < 3) | (nargin > 4)) usage("[K,gain, Kc, Kf, Pc, Pf] = h2syn(Asys,nu,ny[,tol])");
--- a/scripts/control/hinf_ctr.m +++ b/scripts/control/hinf_ctr.m @@ -35,12 +35,13 @@ ## Do not attempt to use this at home; no argument checking performed. ## @end deftypefn -function K = hinf_ctr (dgs, F, H, Z, g) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1995 +## Revised by Kai P. Mueller April 1998 to solve the general H_infinity +## problem using unitary transformations Q (on w and z) +## and non-singular transformations R (on u and y). - ## A. S. Hodel August 1995 - ## Revised by Kai P Mueller April 1998 to solve the general H_infinity - ## problem using unitary transformations Q (on w and z) - ## and non-singular transformations R (on u and y). +function K = hinf_ctr (dgs, F, H, Z, g) nw = dgs.nw; nu = dgs.nu;
--- a/scripts/control/hinfdemo.m +++ b/scripts/control/hinfdemo.m @@ -1,4 +1,4 @@ -## Copyright (C) 1996, 1998 Kai Mueller +## Copyright (C) 1996, 1998 Kai P. Mueller ## ## This file is part of Octave. ## @@ -128,7 +128,8 @@ ## @end table ## @end deftypefn -## Kai P. Mueller 30-APR-1998 <mueller@ifr.ing.tu-bs.de +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: April 30, 1998 yn = []; while (length(yn) < 1)
--- a/scripts/control/hinfsyn.m +++ b/scripts/control/hinfsyn.m @@ -75,14 +75,15 @@ ## @end enumerate ## @end deftypefn -function [K, g, GW, Xinf, Yinf] = hinfsyn (Asys, nu, ny, gmin, gmax, gtol, ptol, tol) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1995 +## Updated for Packed system structures December 1996 by John Ingram +## +## Revised by Kai P. Mueller April 1998 to solve the general H_infinity +## problem using unitary transformations Q (on w and z) +## and non-singular transformations R (on u and y). - ## A. S. Hodel August 1995 - ## Updated for Packed system structures December 1996 by John Ingram - ## - ## Revised by Kai P Mueller April 1998 to solve the general H_infinity - ## problem using unitary transformations Q (on w and z) - ## and non-singular transformations R (on u and y). +function [K, g, GW, Xinf, Yinf] = hinfsyn (Asys, nu, ny, gmin, gmax, gtol, ptol, tol) if( (nargin < 1) | (nargin > 8) ) usage("[K,g,GW,Xinf,Yinf] = hinfsyn(Asys,nu,ny,gmin,gmax,gtol,ptol,tol)");
--- a/scripts/control/hinfsyn_chk.m +++ b/scripts/control/hinfsyn_chk.m @@ -45,9 +45,10 @@ ## Do not attempt to use this at home; no argument checking performed. ## @end deftypefn -function [retval, Pc, Pf] = hinfsyn_chk (A, B1, B2, C1, C2, D12, D21, g, ptol) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1995 - ## A. S. Hodel August 1995 +function [retval, Pc, Pf] = hinfsyn_chk (A, B1, B2, C1, C2, D12, D21, g, ptol) Pc = Pf = [];
--- a/scripts/control/impulse.m +++ b/scripts/control/impulse.m @@ -44,12 +44,13 @@ ## See also: step, stepimp -function [y, t] = impulse (sys, inp, tstop, n) - -## Written by Kai P. Mueller October 2, 1997 +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: October 2, 1997 ## based on lsim.m of Scottedward Hodel ## modified by +function [y, t] = impulse (sys, inp, tstop, n) + if((nargin < 1) || (nargin > 4)) usage("[y, u] = impulse(sys[, inp, tstop, n])"); endif
--- a/scripts/control/is_abcd.m +++ b/scripts/control/is_abcd.m @@ -25,11 +25,11 @@ ## See also: abcddim -function retval = is_abcd (a, b, c, d) +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: November 4, 1997 +## based on is_controllable.m of Scottedward Hodel - ## Written by Kai P. Mueller November 4, 1997 - ## based on is_controllable.m of Scottedward Hodel - ## modified by +function retval = is_abcd (a, b, c, d) retval = 0; switch (nargin)
--- a/scripts/control/is_controllable.m +++ b/scripts/control/is_controllable.m @@ -58,11 +58,12 @@ ## See also: size, rows, columns, length, is_matrix, is_scalar, is_vector ## is_observable, is_stabilizable, is_detectable, krylov, krylovb -function [retval, U] = is_controllable (a, b, tol) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1993 +## Updated by A. S. Hodel (scotte@eng.auburn.edu) Aubust, 1995 to use krylovb +## Updated by John Ingram (ingraje@eng.auburn.edu) July, 1996 for packed systems - ## Written by A. S. Hodel (scotte@eng.auburn.edu) August, 1993. - ## Updated by A. S. Hodel (scotte@eng.auburn.edu) Aubust, 1995 to use krylovb - ## Updated by John Ingram (ingraje@eng.auburn.edu) July, 1996 for packed systems +function [retval, U] = is_controllable (a, b, tol) deftol = 1; # assume default tolerance if(nargin < 1 | nargin > 3)
--- a/scripts/control/is_detectable.m +++ b/scripts/control/is_detectable.m @@ -33,10 +33,11 @@ ## See also: size, rows, columns, length, is_matrix, is_scalar, is_vector. -function [retval, U] = is_detectable (a, c, tol) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1993 +## Updated by John Ingram (ingraje@eng.auburn.edu) July 1996. - ## Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993. - ## Updated by John Ingram (ingraje@eng.auburn.edu) July 1996. +function [retval, U] = is_detectable (a, c, tol) if( nargin < 1) usage("[retval,U] = is_detectable(a , c {, tol})");
--- a/scripts/control/is_dgkf.m +++ b/scripts/control/is_dgkf.m @@ -94,31 +94,31 @@ ## ## @end deftypefn -function [retval, dgkf_struct] = is_dgkf (Asys, nu, ny, tol) - - ## Written by A. S. Hodel - ## Updated by John Ingram July 1996 to accept structured systems +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Updated by John Ingram July 1996 to accept structured systems - ## Revised by Kai P Mueller April 1998 to solve the general H_infinity - ## problem using unitary transformations Q (on w and z) - ## and non-singular transformations R (on u and y) such - ## that the Dzu and Dyw matrices of the transformed plant - ## - ## ~ - ## P (the variable Asys here) - ## - ## become - ## - ## ~ -1 T - ## D = Q D R = [ 0 I ] or [ I ], - ## 12 12 12 12 - ## - ## ~ T - ## D = R D Q = [ 0 I ] or [ I ]. - ## 21 21 21 21 - ## - ## This transformation together with the algorithm in [1] solves - ## the general problem (see [2] for example). +## Revised by Kai P. Mueller April 1998 to solve the general H_infinity +## problem using unitary transformations Q (on w and z) +## and non-singular transformations R (on u and y) such +## that the Dzu and Dyw matrices of the transformed plant +## +## ~ +## P (the variable Asys here) +## +## become +## +## ~ -1 T +## D = Q D R = [ 0 I ] or [ I ], +## 12 12 12 12 +## +## ~ T +## D = R D Q = [ 0 I ] or [ I ]. +## 21 21 21 21 +## +## This transformation together with the algorithm in [1] solves +## the general problem (see [2] for example). + +function [retval, dgkf_struct] = is_dgkf (Asys, nu, ny, tol) if (nargin < 3) | (nargin > 4) usage("[retval,dgkf_struct] = is_dgkf(Asys,nu,ny{,tol})");
--- a/scripts/control/is_digital.m +++ b/scripts/control/is_digital.m @@ -32,9 +32,10 @@ ## Exits with an error of sys is a mixed (continuous and discrete) system ## @end deftypefn -function DIGITAL = is_digital (sys, eflg) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 1996 - ## a s hodel July 1996 +function DIGITAL = is_digital (sys, eflg) switch(nargin) case(1), eflg = 0;
--- a/scripts/control/is_observable.m +++ b/scripts/control/is_observable.m @@ -32,10 +32,11 @@ ## See also: size, rows, columns, length, is_matrix, is_scalar, is_vector. -function [retval, U] = is_observable (a, c, tol) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1993 +## Updated by John Ingram (ingraje@eng.auburn.edu) July 1996. - ## Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993. - ## Updated by John Ingram (ingraje@eng.auburn.edu) July 1996. +function [retval, U] = is_observable (a, c, tol) if( nargin < 1) usage("[retval,U] = is_observable(a , c {, tol})");
--- a/scripts/control/is_sample.m +++ b/scripts/control/is_sample.m @@ -22,7 +22,8 @@ ## (real,scalar, > 0) ## @end deftypefn -## A. S. Hodel July 1995 +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 1995 function out = is_sample (Ts)
--- a/scripts/control/is_siso.m +++ b/scripts/control/is_siso.m @@ -22,7 +22,8 @@ ## @var{sys} is single-input, single-output. ## @end deftypefn -## a s hodel July 1996, 1998 +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 1996, 1998 function SISO = is_siso (sys)
--- a/scripts/control/is_stabilizable.m +++ b/scripts/control/is_stabilizable.m @@ -41,11 +41,12 @@ ## See also: size, rows, columns, length, is_matrix, is_scalar, is_vector ## is_observable, is_stabilizable, is_detectable -function [retval, U] = is_stabilizable (a, b, tol) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1993 +## Updated by A. S. Hodel (scotte@eng.auburn.edu) Aubust, 1995 to use krylovb +## Updated by John Ingram (ingraje@eng.auburn.edu) July, 1996 to accept systems - ## Written by A. S. Hodel (scotte@eng.auburn.edu) August, 1993. - ## Updated by A. S. Hodel (scotte@eng.auburn.edu) Aubust, 1995 to use krylovb - ## Updated by John Ingram (ingraje@eng.auburn.edu) July, 1996 to accept systems +function [retval, U] = is_stabilizable (a, b, tol) if(nargin < 1) usage("[retval,U] = is_stabilizable(a {, b ,tol})"); elseif(is_struct(a))
--- a/scripts/control/is_stable.m +++ b/scripts/control/is_stable.m @@ -41,11 +41,12 @@ ## See also: size, rows, columns, length, is_matrix, is_scalar, is_vector ## is_observable, is_stabilizable, is_detectable, krylov, krylovb -function retval = is_stable (a, tol, disc) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1993 +## Updated by John Ingram (ingraje@eng.auburn.edu) July, 1996 for systems +## Updated to simpler form by a.s.hodel 1998 - ## Written by A. S. Hodel (scotte@eng.auburn.edu) August, 1993. - ## Updated by John Ingram (ingraje@eng.auburn.edu) July, 1996 for systems - ## Updated to simpler form by a.s.hodel 1998 +function retval = is_stable (a, tol, disc) if( (nargin < 1) | (nargin > 3) ) usage("is_stable(a {,tol,disc})"); elseif(is_struct(a))
--- a/scripts/control/jet707.m +++ b/scripts/control/jet707.m @@ -23,16 +23,14 @@ ## System inputs: (1) thrust and (2) elevator angle ## System outputs: (1) airspeed and (2) pitch angle ## Ref: R. Brockhaus: Flugregelung (Flight Control), Springer, 1994 -## -## see also: ord2 -## -## Contributed by Kai Mueller ## @end deftypefn - -function outsys = jet707 () - ## Written by Kai P. Mueller September 28, 1997 - ## Updates +## see also: ord2 + +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: September 28, 1997 + +function outsys = jet707 () if (nargin != 0) usage("outsys = jet707()")
--- a/scripts/control/lqe.m +++ b/scripts/control/lqe.m @@ -86,15 +86,17 @@ ## @end table ## @end deftypefn +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1993 + function [k, p, e] = lqe (a, g, c, sigw, sigv, zz) -## Written by A. S. Hodel (scotte@eng.auburn.edu) August, 1993. if ( (nargin != 5) && (nargin != 6)) error ("lqe: invalid number of arguments"); endif -## The problem is dual to the regulator design, so transform to lqr -## call. + ## The problem is dual to the regulator design, so transform to lqr + ## call. if (nargin == 5) [k, p, e] = lqr (a', c', g*sigw*g', sigv);
--- a/scripts/control/lqg.m +++ b/scripts/control/lqg.m @@ -61,10 +61,11 @@ ## See also: h2syn, lqe, lqr -function [K, Q1, P1, Ee, Er] = lqg (sys, Sigw, Sigv, Q, R, input_list) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1995 +## revised for new system format August 1996 - ## Written by A. S. Hodel August 1995; revised for new system format - ## August 1996 +function [K, Q1, P1, Ee, Er] = lqg (sys, Sigw, Sigv, Q, R, input_list) if ( (nargin < 5) | (nargin > 6)) usage("[K,Q1,P1,Ee,Er] = lqg(sys,Sigw, Sigv,Q,R{,input_list})");
--- a/scripts/control/lqr.m +++ b/scripts/control/lqr.m @@ -111,9 +111,10 @@ ## Prentice-Hall, 1990, pp. 56-58 ## @end deftypefn -function [k, p, e] = lqr (a, b, q, r, s) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1993. - ## Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993. +function [k, p, e] = lqr (a, b, q, r, s) ## disp("lqr: entry");
--- a/scripts/control/lsim.m +++ b/scripts/control/lsim.m @@ -34,10 +34,12 @@ ## and x = system states. ## @end deftypefn -function [y, x] = lsim (sys, u, t, x0) +## Author: David Clem +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 1995 +## modified by John Ingram for system format August 1996 - ## Written by David Clem, A. S. Hodel July 1995 - ## modified by John Ingram for system format August 1996 +function [y, x] = lsim (sys, u, t, x0) if((nargin < 3)||(nargin > 4)) usage("[y,x] = lsim(sys,u,t[,x0])");
--- a/scripts/control/ltifr.m +++ b/scripts/control/ltifr.m @@ -38,11 +38,14 @@ ## for complex frequencies @math{s = jw}. ## @end deftypefn +## Author: R. Bruce Tenison <btenison@eng.auburn.edu> +## Author: David Clem +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 1995 +## updated by John Ingram August 1996 for system format + function out = ltifr (a, b, w) - ## R. B. Tenison, D. Clem, A. S. Hodel, July 1995 - ## updated by John Ingram August 1996 for system format - if ((nargin < 2) || (nargin > 3)) error("incorrect number of input arguments"); endif
--- a/scripts/control/lyap.m +++ b/scripts/control/lyap.m @@ -76,7 +76,7 @@ ## Solves by using the Bartels-Stewart algorithm (1972). ## @end deftypefn -## Author: A. S. Hodel <scotte@eng.auburn.edu> +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> ## Created: August 1993 ## Adapted-By: jwe
--- a/scripts/control/minfo.m +++ b/scripts/control/minfo.m @@ -29,11 +29,12 @@ ## ncstates is the number of continuous states of the system ## ndstates is the number of discrete states of the system -function [systype, nout, nin, ncstates, ndstates] = minfo (inmat) +## Author: R. Bruce Tenison <btenison@eng.auburn.edu> +## Created: July 29, 1994 +## Modified by David Clem November 13, 1994 +## Modified by A. S. Hodel July 1995 - ## Written by R. Bruce Tenison July 29, 1994 - ## Modified by David Clem November 13, 1994 - ## Modified by A. S. Hodel July 1995 +function [systype, nout, nin, ncstates, ndstates] = minfo (inmat) warning("minfo: obsolete. Use sys2ss, sys2tf, or sys2zp.");
--- a/scripts/control/moddemo.m +++ b/scripts/control/moddemo.m @@ -25,9 +25,11 @@ ## @end format ## @end deftypefn +## Author: David Clem +## Created: August 15, 1994 +## a s hodel: updated to reflect updated output order in ss2zp + function moddemo () -## Written by David Clem August 15, 1994 -## a s hodel: updated to reflect updated output order in ss2zp while (1) clc
--- a/scripts/control/nyquist.m +++ b/scripts/control/nyquist.m @@ -84,13 +84,14 @@ ## ## @end deftypefn +## Author: R. Bruce Tenison <btenison@eng.auburn.edu> +## Created: July 13, 1994 +## A. S. Hodel July 1995 (adaptive frequency spacing, +## remove acura parameter, etc.) +## Revised by John Ingram July 1996 for system format + function [realp, imagp, w] = nyquist (sys, w, outputs, inputs, atol) - ## By R. Bruce Tenison, July 13, 1994 - ## A. S. Hodel July 1995 (adaptive frequency spacing, - ## remove acura parameter, etc.) - ## Revised by John Ingram July 1996 for system format - ## Both bode and nyquist share the same introduction, so the common ## parts are in a file called bodquist.m. It contains the part that ## finds the number of arguments, determines whether or not the system
--- a/scripts/control/obsv.m +++ b/scripts/control/obsv.m @@ -36,10 +36,10 @@ ## are much better for observability tests. ## @end deftypefn -function Qb = obsv (sys, c) +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: November 4, 1997 - ## Written by Kai P. Mueller November 4, 1997 - ## modified by +function Qb = obsv (sys, c) if (nargin == 2) a = sys;
--- a/scripts/control/ord2.m +++ b/scripts/control/ord2.m @@ -42,9 +42,11 @@ ## See also: jet707 (MIMO example, Boeing 707-321 aircraft model) +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: September 28, 1997 + function outsys = ord2 (nfreq, damp, gain) - ## Written by Kai P. Mueller September 28, 1997 ## Updates if(nargin != 2 & nargin != 3)
--- a/scripts/control/outlist.m +++ b/scripts/control/outlist.m @@ -42,9 +42,10 @@ ## ## @end deftypefn -function str_val = outlist (name_list, tabchar, yd, ilist) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: December 1995 - ## A. S. Hodel Dec. 1995, 1998 +function str_val = outlist (name_list, tabchar, yd, ilist) ## save for restore later save_empty = empty_list_elements_ok;
--- a/scripts/control/packsys.m +++ b/scripts/control/packsys.m @@ -27,11 +27,12 @@ ## ## Note: discrete-state sampling time is not included! -function Asys = packsys (a, b, c, d, dflg) +## Author: R. Bruce Tenison <btenison@eng.auburn.edu> +## Created: July 29, 1994 +## Modified by David Clem November 13, 1994 +## Modified by A. S. Hodel April 1995 - ## Written by R. Bruce Tenison July 29, 1994 - ## Modified by David Clem November 13, 1994 - ## Modified by A. S. Hodel April 1995 +function Asys = packsys (a, b, c, d, dflg) warning("packsys is obsolete! Use ss2sys instead.");
--- a/scripts/control/parallel.m +++ b/scripts/control/parallel.m @@ -29,11 +29,12 @@ ## -------------------- ## Ksys -function sysp = parallel (Asys, Bsys) +## Author: David Clem +## Created: August 15, 1994 +## completely rewritten Oct 1996 a s hodel +## SYS_INTERNAL accesses members of system structure - ## Written by David Clem August 15, 1994 - ## completely rewritten Oct 1996 a s hodel - ## SYS_INTERNAL accesses members of system structure +function sysp = parallel (Asys, Bsys) if(nargin != 2) usage("sysp = parallel(Asys,Bsys)");
--- a/scripts/control/place.m +++ b/scripts/control/place.m @@ -24,25 +24,25 @@ ## ## Version: Beta (May-1997): If you have any comments, please let me know. ## (see the file place.m for my address) -## -## Written by: Jose Daniel Munoz Frias. ## @end deftypefn - -function K = place (sys, P) - ## Universidad Pontificia Comillas - ## ICAIdea - ## Alberto Aguilera, 23 - ## 28015 Madrid, Spain - ## - ## E-Mail: daniel@dea.icai.upco.es - ## - ## Phone: 34-1-5422800 Fax: 34-1-5596569 - ## - ## Algorithm taken from "The Control Handbook", IEEE press pp. 209-212 - ## - ## code adaped by A.S.Hodel (a.s.hodel@eng.auburn.edu) for use in controls - ## toolbox +## Author: Jose Daniel Munoz Frias + +## Universidad Pontificia Comillas +## ICAIdea +## Alberto Aguilera, 23 +## 28015 Madrid, Spain +## +## E-Mail: daniel@dea.icai.upco.es +## +## Phone: 34-1-5422800 Fax: 34-1-5596569 +## +## Algorithm taken from "The Control Handbook", IEEE press pp. 209-212 +## +## code adaped by A.S.Hodel (a.s.hodel@eng.auburn.edu) for use in controls +## toolbox + +function K = place (sys, P) sav_val = empty_list_elements_ok; empty_list_elements_ok = 1;
--- a/scripts/control/polyout.m +++ b/scripts/control/polyout.m @@ -29,11 +29,12 @@ ## See also: polyval, polyvalm, poly, roots, conv, deconv, residue, ## filter, polyderiv, polyinteg +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: May 1995 +## Nov 1998: Correctly handles complex coefficients + function y = polyout (c, x) -## Written by A. Scottedward Hodel (scotte@eng.auburn.edu) May 1995) -## Nov 1998: Correctly handles complex coefficients - if (nargin < 1 ) || (nargin > 2) || (nargout < 0 ) || (nargout > 1) usage("[y = ] polyout(c,[x])"); endif
--- a/scripts/control/prompt.m +++ b/scripts/control/prompt.m @@ -22,13 +22,13 @@ ## function prompt([str]) ## Prompt user to continue ## str: input string. Default value: "\n ---- Press a key to continue ---" -## Written by David Clem August 15, 1994 -## Modified A. S. Hodel June 1995 -## -## ## @end format ## @end deftypefn +## Author: David Clem +## Created: August 15, 1994 +## Modified A. S. Hodel June 1995 + function prompt (str) if(nargin > 1)
--- a/scripts/control/qzval.m +++ b/scripts/control/qzval.m @@ -35,11 +35,12 @@ ## @strong{Note} @code{qzval} is obsolete; use @code{qz} instead. ## @end deftypefn -## A. S. Hodel July 1998 +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 1998 function lam = qzval (A, B) warning("qzval is obsolete; calling qz instead") lam = qz(A,B); + endfunction -
--- a/scripts/control/rldemo.m +++ b/scripts/control/rldemo.m @@ -21,7 +21,8 @@ ##Octave Controls toolbox demo: Root Locus demo ##@end deftypefn -## Written by David Clem August 15, 1994 +## Author: David Clem +## Created: August 15, 1994 ## Updated by John Ingram December 1996 function rldemo ()
--- a/scripts/control/rlocus.m +++ b/scripts/control/rlocus.m @@ -40,16 +40,18 @@ ## @end format ## @end deftypefn -function [rldata, k_break, rlpol, gvec, real_ax_pts] = rlocus (sys, increment, min_k, max_k) +## Author: David Clem +## Author: R. Bruce Tenison <btenison@eng.auburn.edu> +## Updated by Kristi McGowan July 1996 for intelligent gain selection +## Updated by John Ingram July 1996 for systems - ## Convert the input to a transfer function if necessary - ## Written by Clem and Tenison - ## Updated by Kristi McGowan July 1996 for intelligent gain selection - ## Updated by John Ingram July 1996 for systems +function [rldata, k_break, rlpol, gvec, real_ax_pts] = rlocus (sys, increment, min_k, max_k) if (nargin < 1) | (nargin > 4) usage("rlocus(sys[,inc,mink,maxk])"); endif + + ## Convert the input to a transfer function if necessary [num,den] = sys2tf(sys) # extract numerator/denom polyomials lnum = length(num); lden = length(den);
--- a/scripts/control/rotg.m +++ b/scripts/control/rotg.m @@ -24,4 +24,5 @@ function [c, s] = rotg (a, b) [c,s] = givens(a,b); + endfunction
--- a/scripts/control/series.m +++ b/scripts/control/series.m @@ -35,11 +35,12 @@ ## Command: syst=series(syst1,syst2) ## Forms the series representation of the two mu system arguments. -## Written by David Clem August 15, 1994 +## Author: David Clem +## Created: August 15, 1994 function [a, b, c, d] = series (a1, b1, c1, d1, a2, b2, c2, d2) -## If two arguments input, take care of mu system case + ## If two arguments input, take care of mu system case warning("series is superseded by sysmult; use sysmult instead.") @@ -51,7 +52,7 @@ muflag = 1; endif -## If four arguments input, put two transfer functions in series + ## If four arguments input, put two transfer functions in series if(nargin == 4) a = conv(a1,c1); % was conv1 @@ -59,11 +60,11 @@ c = 0; d = 0; -## Find series combination of 2 state space systems + ## Find series combination of 2 state space systems elseif((nargin == 8)||(muflag == 1)) -## check matrix dimensions + ## check matrix dimensions [n1,m1,p1] = abcddim(a1,b1,c1,d1); [n2,m2,p2] = abcddim(a2,b2,c2,d2); @@ -72,21 +73,21 @@ error("Incorrect matrix dimensions"); endif -## check to make sure the number of outputs of system1 equals the number -## of inputs of system2 + ## check to make sure the number of outputs of system1 equals the number + ## of inputs of system2 if(p1 ~= m2) error("System 1 output / System 2 input connection sizes do not match"); endif -## put the two state space systems in series + ## put the two state space systems in series a = [a1, zeros(rows(a1),columns(a2));b2*c1, a2]; b = [b1;b2*d1]; c = [d2*c1, c2]; d = [d2*d1]; -## take care of mu output + ## take care of mu output if(muflag == 1) a=ss2sys(a,b,c,d);
--- a/scripts/control/sortcom.m +++ b/scripts/control/sortcom.m @@ -35,9 +35,10 @@ ## @end format ## @end deftypefn -function [yy, idx] = sortcom (xx, opt) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: June 1995 - ## Written by A. S. Hodel June 1995 +function [yy, idx] = sortcom (xx, opt) if( nargin < 1 | nargin > 2 ) usage("yy = sortcom(xx[,opt]");
--- a/scripts/control/ss2sys.m +++ b/scripts/control/ss2sys.m @@ -187,9 +187,10 @@ ## ## @end deftypefn -function retsys = ss2sys (a, b, c, d, tsam, n, nz, stname, inname, outname, outlist) +## Author: John Ingram <ingraje@eng.auburn.edu> +## Created: July 20, 1996 - ## Written by John Ingram (ingraje@eng.auburn.edu) July 20, 1996 +function retsys = ss2sys (a, b, c, d, tsam, n, nz, stname, inname, outname, outlist) ## Test for correct number of inputs if ((nargin < 3) | (nargin > 11))
--- a/scripts/control/ss2tf.m +++ b/scripts/control/ss2tf.m @@ -38,10 +38,11 @@ ## @end format ## @end deftypefn -function [num, den] = ss2tf (a, b, c, d) +## Author: R. Bruce Tenison <btenison@eng.auburn.edu> +## Created: June 24, 1994 +## a s hodel: modified to allow for pure gain blocks Aug 1996 - ## Written by R. Bruce Tenison (June 24, 1994) btenison@eng.auburn.edu - ## a s hodel: modified to allow for pure gain blocks Aug 1996 +function [num, den] = ss2tf (a, b, c, d) ## Check args [n,m,p] = abcddim(a,b,c,d);
--- a/scripts/control/ss2zp.m +++ b/scripts/control/ss2zp.m @@ -30,11 +30,12 @@ ## @end format ## @end deftypefn -function [zer, pol, k] = ss2zp (a, b, c, d) +## Author: David Clem +## Created: August 15, 1994 +## Hodel: changed order of output arguments to zer, pol, k. July 1996 +## a s hodel: added argument checking, allow for pure gain blocks aug 1996 - ## Written by David Clem August 15, 1994 - ## Hodel: changed order of output arguments to zer, pol, k. July 1996 - ## a s hodel: added argument checking, allow for pure gain blocks aug 1996 +function [zer, pol, k] = ss2zp (a, b, c, d) if(nargin != 4) usage("[zer,pol,k] = ss2zp(a,b,c,d)");
--- a/scripts/control/starp.m +++ b/scripts/control/starp.m @@ -49,9 +49,10 @@ ## @end format ## @end deftypefn -function sys = starp (P, K, ny, nu); +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: May 1998 - ## Written by Kai Mueller May 1998 +function sys = starp (P, K, ny, nu); if((nargin != 2) && (nargin != 4)) usage("sys = starp(P, K, ny, nu)");
--- a/scripts/control/step.m +++ b/scripts/control/step.m @@ -46,10 +46,11 @@ ## See also: impulse, stepimp -function [y, t] = step (sys, inp, tstop, n) +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: September 30, 1997 +## based on lsim.m of Scottedward Hodel -## Written by Kai P. Mueller September 30, 1997 -## based on lsim.m of Scottedward Hodel +function [y, t] = step (sys, inp, tstop, n) if((nargin < 1) || (nargin > 4)) usage("[y, u] = step(sys[, inp, tstop, n])");
--- a/scripts/control/stepimp.m +++ b/scripts/control/stepimp.m @@ -32,10 +32,11 @@ ## See also: step, impulse -function [y, t] = stepimp (sitype, sys, inp, tstop, n) +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: October 2, 1997 +## based on lsim.m of Scottedward Hodel - ## Written by Kai P. Mueller October 2, 1997 - ## based on lsim.m of Scottedward Hodel +function [y, t] = stepimp (sitype, sys, inp, tstop, n) if (sitype == 1) IMPULSE = 0; elseif (sitype == 2) IMPULSE = 1;
--- a/scripts/control/swap.m +++ b/scripts/control/swap.m @@ -24,12 +24,14 @@ ## @end format ## @end deftypefn -function [a1, b1] = swap (a, b) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 24, 1992 +## Conversion to Octave R. Bruce Tenison July 4, 1994 - ## A. S. Hodel July 24 1992 - ## Conversion to Octave R. Bruce Tenison July 4, 1994 +function [a1, b1] = swap (a, b) a1 = b; b1 = a; + endfunction
--- a/scripts/control/swapcols.m +++ b/scripts/control/swapcols.m @@ -24,13 +24,15 @@ ## @end format ## @end deftypefn +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 23, 1992 +## Conversion to Octave R. Bruce Tenison July 4, 1994 + function B = swapcols (A) - ## A. S. Hodel July 23, 1992 - ## Conversion to Octave R. Bruce Tenison July 4, 1994 - m = length(A(1,:)); idx = m:-1:1; B = A(:,idx); + endfunction
--- a/scripts/control/swaprows.m +++ b/scripts/control/swaprows.m @@ -24,13 +24,15 @@ ## @end format ## @end deftypefn +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 23, 1992 +## Conversion to Octave R. Bruce Tenison July 4, 1994 + function B = swaprows (A) - ## A. S. Hodel July 23, 1992 - ## Conversion to Octave R. Bruce Tenison July 4, 1994 - m = rows(A); idx = m:-1:1; B = A(idx,:); + endfunction
--- a/scripts/control/sys2fir.m +++ b/scripts/control/sys2fir.m @@ -26,9 +26,10 @@ ## See also: fir2sys -function [c, tsam, inname, outname] = sys2fir (sys) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 1996 - ## a s hodel July 1996 +function [c, tsam, inname, outname] = sys2fir (sys) ## let sys2tf do most of the work
--- a/scripts/control/sys2ss.m +++ b/scripts/control/sys2ss.m @@ -62,10 +62,11 @@ ## @end example ## @end deftypefn -function [a, b, c, d, tsam, n, nz, stname, inname, outname, yd] = sys2ss (sys) +## Author: David Clem +## Created: August 19, 1994 +## Updates by John Ingram July 14, 1996 - ## Written by David Clem August 19, 1994 - ## Updates by John Ingram July 14, 1996 +function [a, b, c, d, tsam, n, nz, stname, inname, outname, yd] = sys2ss (sys) if(nargin != 1) usage("[a,b,c,d,tsam,n,nz,stname,inname,outname,yd] = sys2ss(sys)")
--- a/scripts/control/sys2tf.m +++ b/scripts/control/sys2tf.m @@ -31,11 +31,13 @@ ## @end example ## @end deftypefn -function [num, den, tsam, inname, outname] = sys2tf (Asys) -## Written by R. Bruce Tenison (June 24, 1994) btenison@eng.auburn.edu +## Author: R. Bruce Tenison <btenison@eng.auburn.edu> +## Created: June 24, 1994 ## modified to make sys2tf by A. S. Hodel Aug 1995 ## modified again for updated system format by John Ingram July 1996 +function [num, den, tsam, inname, outname] = sys2tf (Asys) + if(nargin != 1) usage("[num,den,tsam,inname,outname] = sys2tf(Asys)"); endif
--- a/scripts/control/sys2zp.m +++ b/scripts/control/sys2zp.m @@ -35,9 +35,10 @@ ## @end example ## @end deftypefn -function [zer, pol, k, tsam, inname, outname] = sys2zp (sys) +## Author: John Ingram <ingraje@eng.auburn.edu> +## Created: July 15, 1996 - ## Created by John Ingram July 15 1996 +function [zer, pol, k, tsam, inname, outname] = sys2zp (sys) if(nargin != 1) usage("[zer,pol,k,tsam,inname,outname] = sys2zp(sys)");
--- a/scripts/control/sysadd.m +++ b/scripts/control/sysadd.m @@ -39,10 +39,11 @@ ## @end example ## @end deftypefn -function sys = sysadd (...) +## Author: John Ingram <ingraje@eng.auburn.edu> +## Created: July 1996 +## Updated for variable number of arguments July 1999 A. S. Hodel - ## Written by John Ingram July 1996 - ## Updated for variable number of arguments July 1999 A. S. Hodel +function sys = sysadd (...) if(nargin < 1) usage("sysadd: sys = sysysadd(Gsys{,Hsys, ...})");
--- a/scripts/control/sysappend.m +++ b/scripts/control/sysappend.m @@ -74,10 +74,11 @@ ## ## @end deftypefn +## Author: John Ingram <ingraje@eng.auburn.edu> +## Created: August 1996 + function retsys = sysappend (sys, b, c, d, outname, inname, yd) - ## written by John Ingram August 1996 - sav_empty_list_elements_ok = empty_list_elements_ok; empty_list_elements_ok = 1;
--- a/scripts/control/syschnames.m +++ b/scripts/control/syschnames.m @@ -21,8 +21,11 @@ ## Superseded by @code{syssetsignals} ## @end deftypefn +## Author: John Ingram <ingraje@eng.auburn.edu> +## Created: August 1996 +## updated by A. S. Hodel 1998 + function retsys = syschnames (sys, opt, list, names) -## Written by John Ingram August 1996; updated by A. S. Hodel 1998 retsys = syssetsignals(sys,opt,names,list);
--- a/scripts/control/syschtsam.m +++ b/scripts/control/syschtsam.m @@ -22,8 +22,10 @@ ## an error if sys is purely continuous time. ## @end deftypefn +## Author: John Ingram <ingraje@eng.auburn.edu> +## Created: August 1996 + function retsys = syschtsam (sys, tsam) -## Written by John Ingram August 1996 if (nargin != 2) usage("retsys = syschtsam(sys,tsam)");
--- a/scripts/control/sysconnect.m +++ b/scripts/control/sysconnect.m @@ -63,10 +63,11 @@ ## ## @end deftypefn -function sys = sysconnect (sys, output_list, input_list, order, tol) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1995 +## modified by John Ingram July 1996 - ## A. S. Hodel August 1995 - ## modified by John Ingram July 1996 +function sys = sysconnect (sys, output_list, input_list, order, tol) if( (nargin < 3) | (nargin > 5) ) usage("retsys = sysconnect(sys,output_list,input_list[,order,tol])");
--- a/scripts/control/syscont.m +++ b/scripts/control/syscont.m @@ -36,9 +36,10 @@ ## ## @end deftypefn -function [csys, Acd, Ccd] = syscont (sys) +## Author: John Ingram <ingraje@eng.auburn.edu> +## Created: August 1996 - ## Written by John Ingram August 1996 +function [csys, Acd, Ccd] = syscont (sys) save_empty = empty_list_elements_ok; empty_list_elements_ok = 1;
--- a/scripts/control/syscont_disc.m +++ b/scripts/control/syscont_disc.m @@ -39,9 +39,10 @@ ## ## @end deftypefn -function [n_tot, st_c, st_d, y_c, y_d] = syscont_disc (sys) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: February 1997 - ## Written by A. S. Hodel (a.s.hodel@eng.auburn.edu) Feb 1997 +function [n_tot, st_c, st_d, y_c, y_d] = syscont_disc (sys) ## get ranges for discrete/continuous states and outputs [nn,nz,mm,pp,yd] = sysdimensions(sys);
--- a/scripts/control/sysdimensions.m +++ b/scripts/control/sysdimensions.m @@ -67,34 +67,35 @@ ## See also: sysgetsignals, sysgettsam function [n, nz, m, p, yd] = sysdimensions (sys, opt) -if(nargout > 5 | nargin < 1 | nargin > 2) - usage("[n,nz,m,p[,yd]] = sysdimensions(sys{,opt})"); -elseif(!is_struct(sys)) - usage("[n,nz,m,p] = sysdimensions(sys)"); -elseif(nargin == 1) - opt = "all"; -endif + + if(nargout > 5 | nargin < 1 | nargin > 2) + usage("[n,nz,m,p[,yd]] = sysdimensions(sys{,opt})"); + elseif(!is_struct(sys)) + usage("[n,nz,m,p] = sysdimensions(sys)"); + elseif(nargin == 1) + opt = "all"; + endif -n = sys.n; -nz = sys.nz; -m = length(sysgetsignals(sys,"in")); -p = length(sysgetsignals(sys,"out")); -yd = sys.yd; -legal_options = list("all","cst","dst","st","in","out"); -legal_values = list(n,n,nz,n+nz,m,p); + n = sys.n; + nz = sys.nz; + m = length(sysgetsignals(sys,"in")); + p = length(sysgetsignals(sys,"out")); + yd = sys.yd; + legal_options = list("all","cst","dst","st","in","out"); + legal_values = list(n,n,nz,n+nz,m,p); -legal_opt = 0; -for ii=1:length(legal_options) - if(strcmp(nth(legal_options,ii),opt)) - n = nth(legal_values,ii); - legal_opt = 1; - if(ii > 1 & nargout > 1) - warning("opt=%s, %d output arguments requested",opt,nargout); + legal_opt = 0; + for ii=1:length(legal_options) + if(strcmp(nth(legal_options,ii),opt)) + n = nth(legal_values,ii); + legal_opt = 1; + if(ii > 1 & nargout > 1) + warning("opt=%s, %d output arguments requested",opt,nargout); + endif endif + endfor + if(!legal_opt) + error("illegal option passed = %s",opt); endif -endfor -if(!legal_opt) - error("illegal option passed = %s",opt); -endif endfunction
--- a/scripts/control/sysdisc.m +++ b/scripts/control/sysdisc.m @@ -36,19 +36,9 @@ function [dsys, Adc, Cdc] = sysdisc (sys) - ## function [dsys,Adc,Cdc] = sysdisc(sys) - ## inputs: sys = system data structure - ## outputs: - ## dsys: purely discrete portion of sys (returned empty if there is - ## no purely discrete path from inputs to outputs) - ## Adc, Cdc: connections from continuous states to discrete states/discrete - ## outputs, respectively. - ## - save_empty = empty_list_elements_ok; empty_list_elements_ok = 1; - if (nargin != 1) usage("[dsys,Adc,Cdc] = sysdisc(sys)"); elseif (!is_struct(sys))
--- a/scripts/control/sysdup.m +++ b/scripts/control/sysdup.m @@ -51,10 +51,11 @@ ## ## @end deftypefn -function retsys = sysdup (Asys, output_list, input_list) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1995 +## modified by John Ingram July 1996 - ## A. S. Hodel August 1995 - ## modified by John Ingram July 1996 +function retsys = sysdup (Asys, output_list, input_list) if( nargin != 3) usage("retsys = sysdup(Asys,output_list,input_list)");
--- a/scripts/control/sysgroup.m +++ b/scripts/control/sysgroup.m @@ -46,15 +46,15 @@ ## ## @end deftypefn -function sys = sysgroup (...) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1995 +## modified by John Ingram July 1996 +## A. S. Hodel: modified for variable number of arguments 1999 - ## A. S. Hodel August 1995 - ## modified by John Ingram July 1996 - ## A. S. Hodel: modified for variable number of arguments 1999 +function sys = sysgroup (...) save_emp = empty_list_elements_ok; empty_list_elements_ok = 1; - if(nargin < 1) usage("sys = sysgroup(Asys{,Bsys,...})");
--- a/scripts/control/sysidx.m +++ b/scripts/control/sysidx.m @@ -25,7 +25,7 @@ ## outputs: ## idxvec: vector of signal indices (appropriate for use with sysprune) -## Written by A. S. Hodel, a.s.hodel@eng.auburn.edu +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> function idxvec = sysidx (sys, sigtype, signamelist)
--- a/scripts/control/sysmin.m +++ b/scripts/control/sysmin.m @@ -32,7 +32,7 @@ ## cflg: is_controllable(retsys) ## oflg: is_observable(retsys) -## Written by A. S. Hodel a.s.hodel@eng.auburn.edu +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> function [retsys, nc, no, cflg, oflg] = sysmin (sys, flg);
--- a/scripts/control/sysmult.m +++ b/scripts/control/sysmult.m @@ -32,10 +32,11 @@ ## does not recognize discrete inputs). ## @end deftypefn -function sys = sysmult (...) +## Author: John Ingram <ingraje@eng.auburn.edu> +## Created: July 1996 +## updated for variable number of arguments by A. S. Hodel July 1999 - ## Written by John Ingram July 1996 - ## updated for variable number of arguments by A. S. Hodel July 1999 +function sys = sysmult (...) if(nargin < 1) usage("sysmult: sys = sysmult(Asys{,Bsys,...})");
--- a/scripts/control/sysout.m +++ b/scripts/control/sysout.m @@ -39,9 +39,10 @@ ## @end table ## @end deftypefn -function retsys = sysout (sys, opt) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: 1995-1996 - ## Written by A S Hodel: 1995-1996 +function retsys = sysout (sys, opt) if( (nargin < 1) || (nargin > 2) ) usage("sysout(sys[,opt])");
--- a/scripts/control/sysprune.m +++ b/scripts/control/sysprune.m @@ -45,10 +45,11 @@ ## @end deftypefn ## -function sys = sysprune (sys, output_idx, input_idx, state_idx) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1995 +## Updated by John Ingram 7-15-96 - ## A. S. Hodel August 1995 - ## Updated by John Ingram 7-15-96 +function sys = sysprune (sys, output_idx, input_idx, state_idx) if( nargin < 3 | nargin > 4 ) usage("retsys = sysprune(sys,output_idx,input_idx{,state_idx})");
--- a/scripts/control/sysreorder.m +++ b/scripts/control/sysreorder.m @@ -30,10 +30,11 @@ ## desired locations. ## @end deftypefn +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1995 + function pv = sysreorder (vlen, list) - ## A. S. Hodel, Aug 1995 - ## disp('sysreorder: entry') pv = 1:vlen;
--- a/scripts/control/sysrepdemo.m +++ b/scripts/control/sysrepdemo.m @@ -21,8 +21,8 @@ ## Tutorial for the use of the system data structure functions. ## @end deftypefn -## Octave Controls toolbox demo: System representation -## Written by A. S. Hodel June 1995 +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: June 1995 ## Revised Aug 1995 for system data structure format function sysrepdemo ()
--- a/scripts/control/sysscale.m +++ b/scripts/control/sysscale.m @@ -41,10 +41,11 @@ ## set appropriately in the returned value of @var{sys}. ## @end deftypefn -function sys = sysscale (sys, outscale, inscale, outname, inname) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1995 +## modified by John Ingram 7-15-96 - ## A. S. Hodel August 1995 - ## modified by John Ingram 7-15-96 +function sys = sysscale (sys, outscale, inscale, outname, inname) if( (nargin < 3) || (nargin > 5) ) usage("retsys = sysscale(Asys,output_list,input_list{,inname,outname})");
--- a/scripts/control/syssetsignals.m +++ b/scripts/control/syssetsignals.m @@ -86,9 +86,10 @@ ## ## @end deftypefn -function retsys = syssetsignals (sys, opt, names, sig_idx) +## Author: John Ingram <ingraje@eng.auburn.edu> +## Created: August 1996 - ## Written by John Ingram August 1996 +function retsys = syssetsignals (sys, opt, names, sig_idx) if (nargin < 3 | nargin > 4) usage("retsys=syssetsignals(sys,opt,names{,sig_idx})");
--- a/scripts/control/syssub.m +++ b/scripts/control/syssub.m @@ -36,10 +36,11 @@ ## @end example ## @end deftypefn -function sys = syssub (...) +## Author: John Ingram <ingraje@eng.auburn.edu> +## Created: July 1996 +## updated for variable numbers of input arguments by July 1999 A. S. Hodel - ## Written by John Ingram July 1996 - ## updated for variable numbers of input arguments by July 1999 A. S. Hodel +function sys = syssub (...) if(nargin < 1) usage("syssub: sys = syssub(Gsys{,Hsys,...})");
--- a/scripts/control/sysupdate.m +++ b/scripts/control/sysupdate.m @@ -48,9 +48,10 @@ ## See also: tf2sys, ss2sys, zp2sys, sysout, sys2ss, sys2tf, sys2zp -function sys = sysupdate (sys, opt) +## Author: John Ingram <ingraje@eng.auburn.edu> +## Created: July 9, 1996 - ## Written by John Ingram 7-9-96 +function sys = sysupdate (sys, opt) ## check for correct number of inputs if (nargin != 2)
--- a/scripts/control/tf2ss.m +++ b/scripts/control/tf2ss.m @@ -42,9 +42,11 @@ ## @end format ## @end deftypefn +## Author: R. Bruce Tenison <btenison@eng.auburn.edu> +## Created: June 22, 1994 +## mod A S Hodel July, Aug 1995 + function [a, b, c, d] = tf2ss (num, den) - ## Written by R. Bruce Tenison (June 22, 1994) btenison@eng.auburn.edu - ## mod A S Hodel July, Aug 1995 if(nargin != 2) error("tf2ss: wrong number of input arguments") elseif(isempty(num)) error("tf2ss: empty numerator");
--- a/scripts/control/tf2sys.m +++ b/scripts/control/tf2sys.m @@ -50,10 +50,12 @@ ## @end example ## @end deftypefn +## Author: R. Bruce Tenison <btenison@eng.auburn.edu> +## Created: July 29, 1994 +## Name changed to TF2SYS July 1995 +## updated for new system data structure format July 1996 + function outsys = tf2sys (num, den, tsam, inname, outname) - ## Written by R. Bruce Tenison July 29, 1994 - ## Name changed to TF2SYS July 1995 - ## updated for new system data structure format July 1996 ## Test for the correct number of input arguments if ((nargin < 2) || (nargin > 5))
--- a/scripts/control/tf2zp.m +++ b/scripts/control/tf2zp.m @@ -28,8 +28,9 @@ ## @end format ## @end deftypefn +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> + function [zer, pol, k] = tf2zp (num, den) -## Written by A. S. Hodel, etc. if(nargin == 2) if(length(den) > 1) pol = roots(den); @@ -41,4 +42,5 @@ [a,b,c,d] = tf2ss(num,den); [dum,k] = tzero(a,b,c,d); + endfunction
--- a/scripts/control/tfout.m +++ b/scripts/control/tfout.m @@ -25,8 +25,10 @@ ## See also: polyval, polyvalm, poly, roots, conv, deconv, residue, ## filter, polyderiv, polyinteg, polyout +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: June 1995 + function tfout (num, denom, x) -## Written by A. Scottedward Hodel (scotte@eng.auburn.edu) June 1995) save_empty = empty_list_elements_ok; empty_list_elements_ok = 1;
--- a/scripts/control/tzero.m +++ b/scripts/control/tzero.m @@ -46,10 +46,11 @@ ## @end enumerate ## @end deftypefn -function [zer, gain] = tzero (A, B, C, D) +## Author: R. Bruce Tenison <btenison@eng.auburn.edu> +## Created: July 4, 1994 +## A. S. Hodel Aug 1995: allow for MIMO and system data structures - ## R. Bruce Tenison July 4, 1994 - ## A. S. Hodel Aug 1995: allow for MIMO and system data structures +function [zer, gain] = tzero (A, B, C, D) ## get A,B,C,D and Asys variables, regardless of initial form if(nargin == 4)
--- a/scripts/control/tzero2.m +++ b/scripts/control/tzero2.m @@ -26,8 +26,10 @@ ##@code{tzero} instead. ##@end deftypefn +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1993 + function zr = tzero2 (a, b, c, d, bal) -## Written by A. S. Hodel (scotte@eng.auburn.edu) August 1993. if (nargin == 4) bal = "B";
--- a/scripts/control/ugain.m +++ b/scripts/control/ugain.m @@ -28,13 +28,14 @@ ## ## @end deftypefn -function outsys = ugain (n) +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: April 1998 - ## Written by Kai P. Mueller April, 1998 - ## Updates +function outsys = ugain (n) if((nargin != 1) || (nargout > 1)) usage("outsys = ugain(n)") endif outsys = ss2sys([],[],[],eye(n)); + endfunction
--- a/scripts/control/unpacksys.m +++ b/scripts/control/unpacksys.m @@ -19,9 +19,10 @@ ## [a,b,c,d] = unpacksys(sys) ## Obsolete. Use sys2ss instead. -function [a, b, c, d] = unpacksys (syst) +## Author: David Clem +## Created: August 19, 1994 - ## Written by David Clem August 19, 1994 +function [a, b, c, d] = unpacksys (syst) warning("unpacksys obsolete; calling sys2ss"); [a,b,c,d] = sys2ss(syst);
--- a/scripts/control/wgt1o.m +++ b/scripts/control/wgt1o.m @@ -31,8 +31,10 @@ ## fc = Corner frequency (in Hz, *not* in rad/sec) ## @end deftypefn +## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de> +## Created: September 30, 1997 + function wsys = wgt1o (vl, vh, fc) -## Written by Kai P. Mueller September 30, 1997 if (nargin != 3) usage("wsys = wgt1o(vl, vh, fc)");
--- a/scripts/control/zgfmul.m +++ b/scripts/control/zgfmul.m @@ -28,11 +28,11 @@ ## ZGEP: Hodel, "Computation of Zeros with Balancing," 1992, submitted to LAA ## Generalized CG: Golub and Van Loan, "Matrix Computations, 2nd ed" 1989 +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Conversion to Octave July 3, 1994 + function y = zgfmul (a, b, c, d, x) - ## A. S. Hodel July 24 1992 - ## Conversion to Octave July 3, 1994 - [n,m] = size(b); [p,m1] = size(c); nm = n+m;
--- a/scripts/control/zgfslv.m +++ b/scripts/control/zgfslv.m @@ -21,9 +21,10 @@ ## solve system of equations for dense zgep problem ## @end deftypefn +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Converted to Octave by R Bruce Tenison, July 3, 1994 + function x = zgfslv (n, m, p, b) - ## Written by A. Scotte Hodel - ## Converted to Octave by R Bruce Tenison, July 3, 1994 nmp = n+m+p; gam1 = (2*n)+m+p; gam2 = n+p; gam3 = n+m;
--- a/scripts/control/zginit.m +++ b/scripts/control/zginit.m @@ -29,10 +29,11 @@ ## ZGEP: Hodel, "Computation of Zeros with Balancing," 1992, submitted to LAA ## Generalized CG: Golub and Van Loan, "Matrix Computations, 2nd ed" 1989 -function zz = zginit (a, b, c, d) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 24, 1992 +## Conversion to Octave by R. Bruce Tenison, July 3, 1994 - ## A. S. Hodel July 24 1992 - ## Conversion to Octave by R. Bruce Tenison, July 3, 1994 +function zz = zginit (a, b, c, d) [nn,mm] = size(b); [pp,mm] = size(d);
--- a/scripts/control/zgpbal.m +++ b/scripts/control/zgpbal.m @@ -38,10 +38,11 @@ ## ZGEP: Hodel, "Computation of Zeros with Balancing," 1992, submitted to LAA ## Generalized CG: Golub and Van Loan, "Matrix Computations, 2nd ed" 1989 -function retsys = zgpbal (Asys) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 24, 1992 +## Conversion to Octave by R. Bruce Tenison July 3, 1994 - ## A. S. Hodel July 24 1992 - ## Conversion to Octave by R. Bruce Tenison July 3, 1994 +function retsys = zgpbal (Asys) if( (nargin != 1) | (!is_struct(Asys))) usage("retsys = zgpbal(Asys)");
--- a/scripts/control/zgscal.m +++ b/scripts/control/zgscal.m @@ -28,10 +28,11 @@ ## ZGEP: Hodel, "Computation of Zeros with Balancing," 1992, submitted to LAA ## Generalized CG: Golub and Van Loan, "Matrix Computations, 2nd ed" 1989 -function x = zgscal (a, b, c, d, z, n, m, p) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 24, 1992 +## Conversion to Octave R. Bruce Tenison July 3, 1994 - ## A. S. Hodel July 24 1992 - ## Conversion to Octave R. Bruce Tenison July 3, 1994 +function x = zgscal (a, b, c, d, z, n, m, p) ## initialize parameters: ## Givens rotations, diagonalized 2x2 block of F, gcg vector initialization
--- a/scripts/control/zgsgiv.m +++ b/scripts/control/zgsgiv.m @@ -22,13 +22,15 @@ ## No longer used in zero-balancing (zgpbal); kept for backward compatibility ## @end deftypefn -function [a, b] = zgsgiv (c, s, a, b) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 29, 1992 +## Convertion to Octave by R. Bruce Tenison July 3, 1994 - ## A. S. Hodel July 29, 1992 - ## Convertion to Octave by R. Bruce Tenison July 3, 1994 +function [a, b] = zgsgiv (c, s, a, b) t1 = c*a + s*b; t2 = -s*a + c*b; a = t1; b = t2; + endfunction
--- a/scripts/control/zgshsr.m +++ b/scripts/control/zgshsr.m @@ -23,10 +23,11 @@ ## Called by zgfslv ## @end deftypefn -function x = zgshsr (y) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: July 24, 1992 +## Conversion to Octave by R. Bruce Tenison July 3, 1994 - ## A. S. Hodel July 24, 1992 - ## Conversion to Octave by R. Bruce Tenison July 3, 1994 +function x = zgshsr (y) if(!is_vector(y)) error(sprintf("y(%dx%d) must be a vector",rows(y),columns(y)));
--- a/scripts/control/zp2ss.m +++ b/scripts/control/zp2ss.m @@ -45,9 +45,10 @@ ## @samp{k} is @code{zp}-form leading coefficient. ## @end deftypefn -function [a, b, c, d] = zp2ss (zer, pol, k) +## Author: David Clem +## Created: August 15, 1994 - ## Written by David Clem August 15, 1994 +function [a, b, c, d] = zp2ss (zer, pol, k) sav_val = empty_list_elements_ok; empty_list_elements_ok = 1;
--- a/scripts/control/zp2ssg2.m +++ b/scripts/control/zp2ssg2.m @@ -23,9 +23,10 @@ ## a polynomial with those roots. ## @end deftypefn -function [poly, rvals] = zp2ssg2 (rvals) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: August 1996 - ## A. S. Hodel Aug 1996 +function [poly, rvals] = zp2ssg2 (rvals) ## locate imaginary roots (if any) cidx = find(imag(rvals));
--- a/scripts/control/zp2sys.m +++ b/scripts/control/zp2sys.m @@ -52,9 +52,9 @@ ## @end example ## @end deftypefn -function outsys = zp2sys (zer, pol, k, tsam, inname, outname) +## Modified by John Ingram July 20, 1996 - ## Modified by John Ingram July 20, 1996 +function outsys = zp2sys (zer, pol, k, tsam, inname, outname) ## Test for the correct number of input arguments if ((nargin < 3) || (nargin > 6))
--- a/scripts/control/zp2tf.m +++ b/scripts/control/zp2tf.m @@ -31,12 +31,13 @@ ## @code{num/den} from the vectors of poles and zeros. ## @end deftypefn +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## (With help from students Ingram, McGowan.) + function [num, den] = zp2tf (zer, pol, k) ## Find out whether data was entered as a row or a column vector and - ## convert to a column vector if necessary - ## Written by A. S. Hodel with help from students Ingram, McGowan. - ## a.s.hodel@eng.auburn.edu + ## convert to a column vector if necessary. [rp,cp] = size(pol); [rz,cz] = size(zer);
--- a/scripts/control/zpout.m +++ b/scripts/control/zpout.m @@ -25,9 +25,10 @@ ## See also: polyval, polyvalm, poly, roots, conv, deconv, residue, ## filter, polyderiv, polyinteg, polyout -function zpout (zer, pol, k, x) +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Created: June 1995 - ## Written by A. Scottedward Hodel (scotte@eng.auburn.edu) June 1995) +function zpout (zer, pol, k, x) save_empty = empty_list_elements_ok; empty_list_elements_ok = 1;