@@ -451,6 +451,15 @@ def assert_step_info_match(self, sys, info, info_ref):
451
451
# local min/max peak well after signal has risen
452
452
np .testing .assert_allclose (info [k ], info_ref [k ], rtol = 1e-3 )
453
453
454
+ @pytest .mark .parametrize (
455
+ "yfinal" , [True , False ], ids = ["yfinal" , "no yfinal" ])
456
+ @pytest .mark .parametrize (
457
+ "systype, time_2d" ,
458
+ [("ltisys" , False ),
459
+ ("time response" , False ),
460
+ ("time response" , True ),
461
+ ],
462
+ ids = ["ltisys" , "time response (n,)" , "time response (1,n)" ])
454
463
@pytest .mark .parametrize (
455
464
"tsystem" ,
456
465
["siso_tf_step_matlab" ,
@@ -459,16 +468,10 @@ def assert_step_info_match(self, sys, info, info_ref):
459
468
"siso_tf_kneg" ,
460
469
"siso_tf_type1" ],
461
470
indirect = ["tsystem" ])
462
- @pytest .mark .parametrize (
463
- "systype, time_2d" ,
464
- [("lti" , False ),
465
- ("time response data" , False ),
466
- ("time response data" , True ),
467
- ])
468
- def test_step_info (self , tsystem , systype , time_2d ):
471
+ def test_step_info (self , tsystem , systype , time_2d , yfinal ):
469
472
"""Test step info for SISO systems."""
470
473
step_info_kwargs = tsystem .kwargs .get ('step_info' , {})
471
- if systype == "time response data " :
474
+ if systype == "time response" :
472
475
# simulate long enough for steady state value
473
476
tfinal = 3 * tsystem .step_info ['SettlingTime' ]
474
477
if
10000
np .isnan (tfinal ):
@@ -478,29 +481,37 @@ def test_step_info(self, tsystem, systype, time_2d):
478
481
step_info_kwargs ['T' ] = t [np .newaxis , :] if time_2d else t
479
482
else :
480
483
sysdata = tsystem .sys
484
+ if yfinal :
485
+ step_info_kwargs ['yfinal' ] = tsystem .step_info ['SteadyStateValue' ]
481
486
482
487
info = step_info (sysdata , ** step_info_kwargs )
483
488
484
489
self .assert_step_info_match (tsystem .sys , info , tsystem .step_info )
485
490
491
+ @pytest .mark .parametrize (
492
+ "yfinal" , [True , False ], ids = ["yfinal" , "no_yfinal" ])
493
+ @pytest .mark .parametrize (
494
+ "systype" , ["ltisys" , "time response" ])
486
495
@pytest .mark .parametrize (
487
496
"tsystem" ,
488
497
['mimo_ss_step_matlab' ,
489
498
pytest .param ('mimo_tf_step' , marks = slycotonly )],
490
499
indirect = ["tsystem" ])
491
- @pytest .mark .parametrize (
492
- "systype" , ["lti" , "time response data" ])
493
- def test_step_info_mimo (self , tsystem , systype ):
500
+ def test_step_info_mimo (self , tsystem , systype , yfinal ):
494
501
"""Test step info for MIMO systems."""
495
502
step_info_kwargs = tsystem .kwargs .get ('step_info' , {})
496
- if systype == "time response data " :
503
+ if systype == "time response" :
497
504
tfinal = 3 * max ([S ['SettlingTime' ]
498
505
for Srow in tsystem .step_info for S in Srow ])
499
506
t , y = step_response (tsystem .sys , T = tfinal , T_num = 5000 )
500
507
sysdata = y
501
508
step_info_kwargs ['T' ] = t
502
509
else :
503
510
sysdata = tsystem .sys
511
+ if yfinal :
512
+ step_info_kwargs ['yfinal' ] = [[S ['SteadyStateValue' ]
513
+ for S in Srow ]
514
+ for Srow in tsystem .step_info ]
504
515
505
516
info_dict = step_info (sysdata , ** step_info_kwargs )
506
517
0 commit comments