5656import scipy as sp
5757import control .xferfcn as tf
5858import control .statesp as ss
59+ import control .frdata as frd
5960
6061def series (sys1 , sys2 ):
6162 """Return the series connection sys2 * sys1 for --> sys1 --> sys2 -->.
6263
6364 Parameters
6465 ----------
65- sys1: scalar, StateSpace, or TransferFunction
66- sys2: scalar, StateSpace, or TransferFunction
66+ sys1: scalar, StateSpace, TransferFunction, or FRD
67+ sys2: scalar, StateSpace, TransferFunction, or FRD
6768
6869 Returns
6970 -------
@@ -105,8 +106,8 @@ def parallel(sys1, sys2):
105106
106107 Parameters
107108 ----------
108- sys1: scalar, StateSpace, or TransferFunction
109- sys2: scalar, StateSpace, or TransferFunction
109+ sys1: scalar, StateSpace, TransferFunction, or FRD
110+ sys2: scalar, StateSpace, TransferFunction, or FRD
110111
111112 Returns
112113 -------
@@ -148,7 +149,7 @@ def negate(sys):
148149
149150 Parameters
150151 ----------
151- sys: StateSpace or TransferFunction
152+ sys: StateSpace, TransferFunction or FRD
152153
153154 Returns
154155 -------
@@ -179,9 +180,9 @@ def feedback(sys1, sys2=1, sign=-1):
179180
180181 Parameters
181182 ----------
182- sys1: scalar, StateSpace, or TransferFunction
183+ sys1: scalar, StateSpace, TransferFunction, FRD
183184 The primary plant.
184- sys2: scalar, StateSpace, or TransferFunction
185+ sys2: scalar, StateSpace, TransferFunction, FRD
185186 The feedback plant (often a feedback controller).
186187 sign: scalar
187188 The sign of feedback. `sign` = -1 indicates negative feedback, and
@@ -219,13 +220,13 @@ def feedback(sys1, sys2=1, sign=-1):
219220
220221 # Check for correct input types.
221222 if not isinstance (sys1 , (int , float , complex , tf .TransferFunction ,
222- ss .StateSpace )):
223- raise TypeError ("sys1 must be a TransferFunction or StateSpace object, \
224- or a scalar." )
223+ ss .StateSpace )):
224+ raise TypeError ("sys1 must be a TransferFunction or StateSpace " +
225+ "object, or a scalar." )
225226 if not isinstance (sys2 , (int , float , complex , tf .TransferFunction ,
226- ss .StateSpace )):
227- raise TypeError ("sys2 must be a TransferFunction or StateSpace object, \
228- or a scalar." )
227+ ss .StateSpace )):
228+ raise TypeError ("sys2 must be a TransferFunction or StateSpace " +
229+ "object, or a scalar." )
229230
230231 # If sys1 is a scalar, convert it to the appropriate LTI type so that we can
231232 # its feedback member function.
@@ -234,6 +235,8 @@ def feedback(sys1, sys2=1, sign=-1):
234235 sys1 = tf ._convertToTransferFunction (sys1 )
235236 elif isinstance (sys2 , ss .StateSpace ):
236237 sys1 = ss ._convertToStateSpace (sys1 )
238+ elif isinstance (sys2 , frd .FRD ):
239+ sys1 = ss ._convertToFRD (sys1 )
237240 else : # sys2 is a scalar.
238241 sys1 = tf ._convertToTransferFunction (sys1 )
239242 sys2 = tf ._convertToTransferFunction (sys2 )
0 commit comments