@@ -194,50 +194,50 @@ def testLists(self):
194
194
sys1_2 = ctrl .series (sys1 , sys2 )
195
195
np .testing .assert_array_almost_equal (sort (pole (sys1_2 )), [- 4. , - 2. ])
196
196
np .testing .assert_array_almost_equal (sort (zero (sys1_2 )), [- 3. , - 1. ])
197
-
197
+
198
198
sys1_3 = ctrl .series (sys1 , sys2 , sys3 );
199
199
np .testing .assert_array_almost_equal (sort (pole (sys1_3 )),
200
200
[- 6. , - 4. , - 2. ])
201
- np .testing .assert_array_almost_equal (sort (zero (sys1_3 )),
201
+ np .testing .assert_array_almost_equal (sort (zero (sys1_3 )),
202
202
[- 5. , - 3. , - 1. ])
203
-
203
+
204
204
sys1_4 = ctrl .series (sys1 , sys2 , sys3 , sys4 );
205
205
np .testing .assert_array_almost_equal (sort (pole (sys1_4 )),
206
206
[- 8. , - 6. , - 4. , - 2. ])
207
207
np .testing .assert_array_almost_equal (sort (zero (sys1_4 )),
208
208
[- 7. , - 5. , - 3. , - 1. ])
209
-
209
+
210
210
sys1_5 = ctrl .series (sys1 , sys2 , sys3 , sys4 , sys5 );
211
211
np .testing .assert_array_almost_equal (sort (pole (sys1_5 )),
212
212
[- 8. , - 6. , - 4. , - 2. , - 0. ])
213
- np .testing .assert_array_almost_equal (sort (zero (sys1_5 )),
213
+ np .testing .assert_array_almost_equal (sort (zero (sys1_5 )),
214
214
[- 9. , - 7. , - 5. , - 3. , - 1. ])
215
215
216
- # Parallel
216
+ # Parallel
217
217
sys1_2 = ctrl .parallel (sys1 , sys2 )
218
218
np .testing .assert_array_almost_equal (sort (pole (sys1_2 )), [- 4. , - 2. ])
219
219
np .testing .assert_array_almost_equal (sort (zero (sys1_2 )),
220
220
sort (zero (sys1 + sys2 )))
221
-
221
+
222
222
sys1_3 = ctrl .parallel (sys1 , sys2 , sys3 );
223
223
np .testing .assert_array_almost_equal (sort (pole (sys1_3 )),
224
224
[- 6. , - 4. , - 2. ])
225
- np .testing .assert_array_almost_equal (sort (zero (sys1_3 )),
225
+ np .testing .assert_array_almost_equal (sort (zero (sys1_3 )),
226
226
sort (zero (sys1 + sys2 + sys3 )))
227
-
227
+
228
228
sys1_4 = ctrl .parallel (sys1 , sys2 , sys3 , sys4 );
229
229
np .testing .assert_array_almost_equal (sort (pole (sys1_4 )),
230
230
[- 8. , - 6. , - 4. , - 2. ])
231
- np .testing .assert_array_almost_equal (sort (zero (sys1_4 )),
232
- sort (zero (sys1 + sys2 +
231
+ np .testing .assert_array_almost_equal (sort (zero (sys1_4 )),
232
+ sort (zero (sys1 + sys2 +
233
233
sys3 + sys4 )))
234
234
235
-
235
+
236
236
sys1_5 = ctrl .parallel (sys1 , sys2 , sys3 , sys4 , sys5 );
237
237
np .testing .assert_array_almost_equal (sort (pole (sys1_5 )),
238
238
[- 8. , - 6. , - 4. , - 2. , - 0. ])
239
- np .testing .assert_array_almost_equal (sort (zero (sys1_5 )),
240
- sort (zero (sys1 + sys2 +
239
+ np .testing .assert_array_almost_equal (sort (zero (sys1_5 )),
240
+ sort (zero (sys1 + sys2 +
241
241
sys3 + sys4 + sys5 )))
242
242
def testMimoSeries (self ):
243
243
"""regression: bdalg.series reverses order of arguments"""
@@ -274,44 +274,54 @@ def test_feedback_args(self):
274
274
275
275
def testConnect (self ):
276
276
sys = append (self .sys2 , self .sys3 ) # two siso systems
277
-
277
+
278
+ # should not raise error
279
+ connect (sys , [[1 , 2 ], [2 , - 2 ]], [2 ], [1 , 2 ])
280
+ connect (sys , [[1 , 2 ], [2 , 0 ]], [2 ], [1 , 2 ])
281
+ connect (sys , [[1 , 2 , 0 ], [2 , - 2 , 1 ]], [2 ], [1 , 2 ])
282
+ connect (sys , [[1 , 2 ], [2 , - 2 ]], [2 , 1 ], [1 ])
283
+ sys3x3 = append (sys , self .sys3 ) # 3x3 mimo
284
+ connect (sys3x3 , [[1 , 2 , 0 ], [2 , - 2 , 1 ], [3 , - 3 , 0 ]], [2 ], [1 , 2 ])
285
+ connect (sys3x3 , [[1 , 2 , 0 ], [2 , - 2 , 1 ], [3 , - 3 , 0 ]], [1 , 2 , 3 ], [3 ])
286
+ connect (sys3x3 , [[1 , 2 , 0 ], [2 , - 2 , 1 ], [3 , - 3 , 0 ]], [2 , 3 ], [2 , 1 ])
287
+
278
288
# feedback interconnection out of bounds: input too high
279
- Q = [[1 , 3 ], [2 , - 2 ]]
280
- with self .assertRaises (IndexError ) as context :
289
+ Q = [[1 , 3 ], [2 , - 2 ]]
290
+ with self .assertRaises (IndexError ):
281
291
connect (sys , Q , [2 ], [1 , 2 ])
282
292
# feedback interconnection out of bounds: input too low
283
- Q = [[0 , 2 ], [2 , - 2 ]]
284
- with self .assertRaises (IndexError ) as context :
293
+ Q = [[0 , 2 ], [2 , - 2 ]]
294
+ with self .assertRaises (IndexError ):
285
295
connect (sys , Q , [2 ], [1 , 2 ])
286
296
287
297
# feedback interconnection out of bounds: output too high
288
- Q = [[1 , 2 ], [2 , - 3 ]]
289
- with self .assertRaises (IndexError ) as context :
298
+ Q = [[1 , 2 ], [2 , - 3 ]]
299
+ with self .assertRaises (IndexError ):
290
300
connect (sys , Q , [2 ], [1 , 2 ])
291
- Q = [[1 , 2 ], [2 , 4 ]]
292
- with self .assertRaises (IndexError ) as context :
301
+ Q = [[1 , 2 ], [2 , 4 ]]
302
+ with self .assertRaises (IndexError ):
293
303
connect (sys , Q , [2 ], [1 , 2 ])
294
-
304
+
295
305
# input/output index testing
296
306
Q = [[1 , 2 ], [2 , - 2 ]] # OK interconnection
297
-
307
+
298
308
# input index is out of bounds: too high
299
- with self .assertRaises (IndexError ) as context :
309
+ with self .assertRaises (IndexError ):
300
310
connect (sys , Q , [3 ], [1 , 2 ])
301
311
# input index is out of bounds: too low
302
- with self .assertRaises (IndexError ) as context :
312
+ with self .assertRaises (IndexError ):
303
313
connect (sys , Q , [0 ], [1 , 2 ])
304
- with self .assertRaises (IndexError ) as context :
314
+ with self .assertRaises (IndexError ):
305
315
connect (sys , Q , [- 2 ], [1 , 2 ])
306
316
# output index is out of bounds: too high
307
- with self .assertRaises (IndexError ) as context :
317
+ with self .assertRaises (IndexError ):
308
318
connect (sys , Q , [2 ], [1 , 3 ])
309
319
# output index is out of bounds: too low
310
- with self .assertRaises (IndexError ) as context :
320
+ with self .assertRaises (IndexError ):
311
321
connect (sys , Q , [2 ], [1 , 0 ])
312
- with self .assertRaises (IndexError ) as context :
322
+ with self .assertRaises (IndexError ):
313
323
connect (sys , Q , [2 ], [1 , - 1 ])
314
-
324
+
315
325
316
326
if __name__ == "__main__" :
317
327
unittest .main ()
0 commit comments