Skip to content

Commit f167b2e

Browse files
authored
Update bdalg.py
Extend the series and parallel to support more parameters
1 parent 6ada795 commit f167b2e

1 file changed

Lines changed: 28 additions & 12 deletions

File tree

control/bdalg.py

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,16 @@
6060

6161
__all__ = ['series', 'parallel', 'negate', 'feedback', 'append', 'connect']
6262

63-
def series(sys1, sys2):
64-
"""Return the series connection sys2 * sys1 for --> sys1 --> sys2 -->.
63+
def series(sys1, sys2,*sysn):
64+
"""Return the series connection (... * sys3 *) sys2 * sys1
65+
for (... sys3 -->) sys1 --> sys2 -->.
6566
6667
Parameters
6768
----------
6869
sys1: scalar, StateSpace, TransferFunction, or FRD
6970
sys2: scalar, StateSpace, TransferFunction, or FRD
70-
71+
sysn: scalar, StateSpace, TransferFunction, or FRD
72+
7173
Returns
7274
-------
7375
out: scalar, StateSpace, or TransferFunction
@@ -97,20 +99,28 @@ def series(sys1, sys2):
9799
Examples
98100
--------
99101
>>> sys3 = series(sys1, sys2) # Same as sys3 = sys2 * sys1.
102+
>>> sys_final = series(sys1, sys2, sys3, sys4)
100103
101104
"""
102-
103-
return sys2 * sys1
104-
105-
def parallel(sys1, sys2):
105+
106+
if len(sysn) == 0:
107+
return sys2 * sys1
108+
else:
109+
sys_final = sys2 * sys1
110+
for sys in sysn:
111+
sys_final = sys * sys_final
112+
return sys_final
113+
114+
def parallel(sys1, sys2, *sysn):
106115
"""
107-
Return the parallel connection sys1 + sys2.
116+
Return the parallel connection sys1 + sys2 (+ sys3 +... ).
108117
109118
Parameters
110119
----------
111120
sys1: scalar, StateSpace, TransferFunction, or FRD
112121
sys2: scalar, StateSpace, TransferFunction, or FRD
113-
122+
sysn: scalar, StateSpace, TransferFunction, or FRD
123+
114124
Returns
115125
-------
116126
out: scalar, StateSpace, or TransferFunction
@@ -140,10 +150,16 @@ def parallel(sys1, sys2):
140150
Examples
141151
--------
142152
>>> sys3 = parallel(sys1, sys2) # Same as sys3 = sys1 + sys2.
143-
153+
>>> sys_final = parallel(sys1, sys2, sys3, sys4)
154+
144155
"""
145-
146-
return sys1 + sys2
156+
if len(sysn) == 0:
157+
return sys1 + sys2
158+
else:
159+
sys_final = sys1 + sys2
160+
for sys in sysn:
161+
sys_final = sys_final + sys
162+
return sys_final
147163

148164
def negate(sys):
149165
"""

0 commit comments

Comments
 (0)