annotate scripts/control/obsolete/series.m @ 4771:b8105302cfe8

[project @ 2004-02-16 17:45:50 by jwe]
author jwe
date Mon, 16 Feb 2004 17:45:50 +0000
parents f8dde1807dee
children 4c8a2e4e0717
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3423
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
1 ## Copyright (C) 1996 Auburn University. All rights reserved.
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
2 ##
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
3 ## This file is part of Octave.
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
4 ##
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
6 ## under the terms of the GNU General Public License as published by the
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
7 ## Free Software Foundation; either version 2, or (at your option) any
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
8 ## later version.
3423
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
9 ##
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but WITHOUT
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
11 ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
12 ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3423
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
13 ## for more details.
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
14 ##
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
15 ## You should have received a copy of the GNU General Public License
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
16 ## along with Octave; see the file COPYING. If not, write to the Free
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
17 ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA.
3423
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
18
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
19 ## Forms the series connection of two systems.
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
20 ##
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
21 ## Superseded by sysmult. Do not use this routine!
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
22 ## used internally in zp2ss
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
23 ##
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
24 ## Type of input: Transfer functions
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
25 ## Command: [num,den]=series(num1,den1,num2,den2)
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
26 ## Forms the series representation of the two transfer functions.
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
27 ##
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
28 ## Type of input: State space systems
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
29 ## Command: [a,b,c,d]=series(a1,b1,c1,d1,a2,b2,c2,d2)
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
30 ## Forms the series representation of the two state space system arguments.
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
31 ## The series connected system will have the inputs of system 1 and the
3423
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
32 ## outputs of system 2.
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
33 ##
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
34 ## Type of input: system data structure
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
35 ## Command: syst=series(syst1,syst2)
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
36 ## Forms the series representation of the two mu system arguments.
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
37
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
38 ## Author: David Clem
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
39 ## Created: August 15, 1994
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
40
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
41 function [a, b, c, d] = series (a1, b1, c1, d1, a2, b2, c2, d2)
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
42
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
43 ## If two arguments input, take care of mu system case
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
44
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
45 warning("series is superseded by sysmult; use sysmult instead.")
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
46
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
47 muflag = 0;
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
48 if(nargin == 2)
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
49 temp=b1;
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
50 [a1,b1,c1,d1]=sys2ss(a1);
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
51 [a2,b2,c2,d2]=sys2ss(temp);
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
52 muflag = 1;
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
53 endif
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
54
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
55 ## If four arguments input, put two transfer functions in series
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
56
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
57 if(nargin == 4)
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
58 a = conv(a1,c1); % was conv1
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
59 b = conv(b1,d1); % was conv1
3423
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
60 c = 0;
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
61 d = 0;
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
62
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
63 ## Find series combination of 2 state space systems
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
64
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
65 elseif((nargin == 8)||(muflag == 1))
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
66
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
67 ## check matrix dimensions
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
68
3423
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
69 [n1,m1,p1] = abcddim(a1,b1,c1,d1);
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
70 [n2,m2,p2] = abcddim(a2,b2,c2,d2);
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
71
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
72 if((n1 == -1) || (n2 == -1))
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
73 error("Incorrect matrix dimensions");
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
74 endif
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
75
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
76 ## check to make sure the number of outputs of system1 equals the number
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
77 ## of inputs of system2
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
78
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
79 if(p1 ~= m2)
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
80 error("System 1 output / System 2 input connection sizes do not match");
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
81 endif
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
82
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
83 ## put the two state space systems in series
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
84
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
85 a = [a1, zeros(rows(a1),columns(a2));b2*c1, a2];
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
86 b = [b1;b2*d1];
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
87 c = [d2*c1, c2];
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
88 d = [d2*d1];
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
89
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
90 ## take care of mu output
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
91
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
92 if(muflag == 1)
4771
b8105302cfe8 [project @ 2004-02-16 17:45:50 by jwe]
jwe
parents: 3426
diff changeset
93 a=ss(a,b,c,d);
3423
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
94 b=c=d=0;
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3423
diff changeset
95 endif
3423
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
96 endif
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
97
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
98 endfunction
12f2097a2ed8 [project @ 2000-01-13 07:04:48 by jwe]
jwe
parents:
diff changeset
99