@@ -451,6 +451,15 @@ def assert_step_info_match(self, sys, info, info_ref):
451451 # local min/max peak well after signal has risen
452452 np .testing .assert_allclose (info [k ], info_ref [k ], rtol = 1e-3 )
453453
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)" ])
454463 @pytest .mark .parametrize (
455464 "tsystem" ,
456465 ["siso_tf_step_matlab" ,
@@ -459,16 +468,10 @@ def assert_step_info_match(self, sys, info, info_ref):
459468 "siso_tf_kneg" ,
460469 "siso_tf_type1" ],
461470 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 ):
469472 """Test step info for SISO systems."""
470473 step_info_kwargs = tsystem .kwargs .get ('step_info' , {})
471- if systype == "time response data " :
474+ if systype == "time response" :
472475 # simulate long enough for steady state value
473476 tfinal = 3 * tsystem .step_info ['SettlingTime' ]
474477 if np .isnan (tfinal ):
@@ -478,29 +481,37 @@ def test_step_info(self, tsystem, systype, time_2d):
478481 step_info_kwargs ['T' ] = t [np .newaxis , :] if time_2d else t
479482 else :
480483 sysdata = tsystem .sys
484+ if yfinal :
485+ step_info_kwargs ['yfinal' ] = tsystem .step_info ['SteadyStateValue' ]
481486
482487 info = step_info (sysdata , ** step_info_kwargs )
483488
484489 self .assert_step_info_match (tsystem .sys , info , tsystem .step_info )
485490
491+ @pytest .mark .parametrize (
492+ "yfinal" , [True , False ], ids = ["yfinal" , "no_yfinal" ])
493+ @pytest .mark .parametrize (
494+ "systype" , ["ltisys" , "time response" ])
486495 @pytest .mark .parametrize (
487496 "tsystem" ,
488497 ['mimo_ss_step_matlab' ,
489498 pytest .param ('mimo_tf_step' , marks = slycotonly )],
490499 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 ):
494501 """Test step info for MIMO systems."""
495502 step_info_kwargs = tsystem .kwargs .get ('step_info' , {})
496- if systype == "time response data " :
503+ if systype == "time response" :
497504 tfinal = 3 * max ([S ['SettlingTime' ]
498505 for Srow in tsystem .step_info for S in Srow ])
499506 t , y = step_response (tsystem .sys , T = tfinal , T_num = 5000 )
500507 sysdata = y
501508 step_info_kwargs ['T' ] = t
502509 else :
503510 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 ]
504515
505516 info_dict = step_info (sysdata , ** step_info_kwargs )
506517
0 commit comments