changeset 3433:0f6b72798944

[project @ 2000-01-14 04:28:07 by jwe]
author jwe
date Fri, 14 Jan 2000 04:28:07 +0000
parents e39d90787668
children c85bd5f4b0f1
files scripts/control/base/starp.m scripts/control/system/starp.m
diffstat 2 files changed, 126 insertions(+), 126 deletions(-) [+]
line wrap: on
line diff
deleted file mode 100644
--- a/scripts/control/base/starp.m
+++ /dev/null
@@ -1,126 +0,0 @@
-## Copyright (C) 1996 Auburn University.  All rights reserved.
-##
-## 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, 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {@var{outputs} =} starp (@var{inputs})
-## @format
-##
-## sys = starp(P, K, ny, nu)
-##
-## Redheffer star product or upper/lower LFT, respectively.
-##
-##
-##                +-------+
-##      --------->|       |--------->
-##                |   P   |
-##           +--->|       |---+  ny
-##           |    +-------+   |
-##           +-------------------+
-##                            |  |
-##           +----------------+  |
-##           |                   |
-##           |    +-------+      |
-##           +--->|       |------+ nu
-##                |   K   |
-##      --------->|       |--------->
-##                +-------+
-##
-## If ny and nu "consume" all inputs and outputs of K then the result
-## is a lower fractional transformation. If ny and nu "consume" all
-## inputs and outputs of P then the result is an upper fractional
-## transformation.
-##
-## ny and/or nu may be negative (= negative feedback)
-## @end format
-## @end deftypefn
-
-## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de>
-## Created: May 1998
-
-function sys = starp (P, K, ny, nu);
-
-  if((nargin != 2) && (nargin != 4))
-    usage("sys = starp(P, K, ny, nu)");
-  endif
-  if (!is_struct(P))
-    error("---> P must be in system data structure");
-  endif
-  if (!is_struct(K))
-    error("---> K must be in system data structure");
-  endif
-
-  P = sysupdate(P, "ss");
-  [n, nz, mp, pp] = sysdimensions(P);
-  np = n + nz;
-  K = sysupdate(K, "ss");
-  [n, nz, mk, pk] = sysdimensions(K);
-  nk = n + nz;
-  ny_sign = 1;
-  nu_sign = 1;
-  if (nargin == 2)
-    ## perform a LFT of P and K (upper or lower)
-    ny = min([pp, mk]);
-    nu = min([pk, mp]);
-  else
-    if (ny < 0)
-      ny = -ny;
-      ny_sign = -1;
-    endif
-    if (nu < 0)
-      nu = -nu;
-      nu_sign = -1;
-    endif
-  endif
-  if (ny > pp)
-    error("---> P has not enough outputs.");
-  endif
-  if (nu > mp)
-    error("---> P has not enough inputs.");
-  endif
-  if (ny > mk)
-    error("---> K has not enough inputs.");
-  endif
-  if (nu > pk)
-    error("---> K has not enough outputs.");
-  endif
-  nwp  = mp - nu;
-  nzp  = pp - ny;
-  nwk  = mk - ny;
-  nzk  = pk - nu;
-  if ((nwp + nwk) < 1)
-    error("---> no inputs left for star product.");
-  endif
-  if ((nzp + nzk) < 1)
-    error("---> no outputs left for star product.");
-  endif
-
-  ## checks done, form sys
-  if (nzp)  Olst = [1:nzp];  endif
-  if (nzk)  Olst = [Olst, pp+nu+1:pp+pk];  endif
-  if (nwp)  Ilst = [1:nwp];  endif
-  if (nwk)  Ilst = [Ilst, mp+ny+1:mp+mk];  endif
-  Clst = zeros(ny+nu,2);
-  for ii = 1:nu
-    Clst(ii,:) = [nwp+ii, nu_sign*(pp+ii)];
-  endfor
-  for ii = 1:ny
-    Clst(nu+ii,:) = [mp+ii, ny_sign*(nzp+ii)];
-  endfor
-  sys = buildssic(Clst,[],Olst,Ilst,P,K);
-
-endfunction
new file mode 100644
--- /dev/null
+++ b/scripts/control/system/starp.m
@@ -0,0 +1,126 @@
+## Copyright (C) 1996 Auburn University.  All rights reserved.
+##
+## 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, 59 Temple Place, Suite 330, Boston, MA 02111 USA.
+
+## -*- texinfo -*-
+## @deftypefn {Function File} {@var{outputs} =} starp (@var{inputs})
+## @format
+##
+## sys = starp(P, K, ny, nu)
+##
+## Redheffer star product or upper/lower LFT, respectively.
+##
+##
+##                +-------+
+##      --------->|       |--------->
+##                |   P   |
+##           +--->|       |---+  ny
+##           |    +-------+   |
+##           +-------------------+
+##                            |  |
+##           +----------------+  |
+##           |                   |
+##           |    +-------+      |
+##           +--->|       |------+ nu
+##                |   K   |
+##      --------->|       |--------->
+##                +-------+
+##
+## If ny and nu "consume" all inputs and outputs of K then the result
+## is a lower fractional transformation. If ny and nu "consume" all
+## inputs and outputs of P then the result is an upper fractional
+## transformation.
+##
+## ny and/or nu may be negative (= negative feedback)
+## @end format
+## @end deftypefn
+
+## Author: Kai P. Mueller <mueller@ifr.ing.tu-bs.de>
+## Created: May 1998
+
+function sys = starp (P, K, ny, nu);
+
+  if((nargin != 2) && (nargin != 4))
+    usage("sys = starp(P, K, ny, nu)");
+  endif
+  if (!is_struct(P))
+    error("---> P must be in system data structure");
+  endif
+  if (!is_struct(K))
+    error("---> K must be in system data structure");
+  endif
+
+  P = sysupdate(P, "ss");
+  [n, nz, mp, pp] = sysdimensions(P);
+  np = n + nz;
+  K = sysupdate(K, "ss");
+  [n, nz, mk, pk] = sysdimensions(K);
+  nk = n + nz;
+  ny_sign = 1;
+  nu_sign = 1;
+  if (nargin == 2)
+    ## perform a LFT of P and K (upper or lower)
+    ny = min([pp, mk]);
+    nu = min([pk, mp]);
+  else
+    if (ny < 0)
+      ny = -ny;
+      ny_sign = -1;
+    endif
+    if (nu < 0)
+      nu = -nu;
+      nu_sign = -1;
+    endif
+  endif
+  if (ny > pp)
+    error("---> P has not enough outputs.");
+  endif
+  if (nu > mp)
+    error("---> P has not enough inputs.");
+  endif
+  if (ny > mk)
+    error("---> K has not enough inputs.");
+  endif
+  if (nu > pk)
+    error("---> K has not enough outputs.");
+  endif
+  nwp  = mp - nu;
+  nzp  = pp - ny;
+  nwk  = mk - ny;
+  nzk  = pk - nu;
+  if ((nwp + nwk) < 1)
+    error("---> no inputs left for star product.");
+  endif
+  if ((nzp + nzk) < 1)
+    error("---> no outputs left for star product.");
+  endif
+
+  ## checks done, form sys
+  if (nzp)  Olst = [1:nzp];  endif
+  if (nzk)  Olst = [Olst, pp+nu+1:pp+pk];  endif
+  if (nwp)  Ilst = [1:nwp];  endif
+  if (nwk)  Ilst = [Ilst, mp+ny+1:mp+mk];  endif
+  Clst = zeros(ny+nu,2);
+  for ii = 1:nu
+    Clst(ii,:) = [nwp+ii, nu_sign*(pp+ii)];
+  endfor
+  for ii = 1:ny
+    Clst(nu+ii,:) = [mp+ii, ny_sign*(nzp+ii)];
+  endfor
+  sys = buildssic(Clst,[],Olst,Ilst,P,K);
+
+endfunction