@@ -1111,6 +1111,8 @@ def forced_response(sys, T=None, U=0., X0=0., transpose=False,
11111111
11121112 return TimeResponseData (
11131113 tout , yout , xout , U , issiso = sys .issiso (),
1114+ output_labels = sys .output_index , input_labels = sys .input_index ,
1115+ state_labels = sys .state_index ,
11141116 transpose = transpose , return_x = return_x , squeeze = squeeze )
11151117
11161118
@@ -1374,8 +1376,14 @@ def step_response(sys, T=None, X0=0., input=None, output=None, T_num=None,
13741376 # Figure out if the system is SISO or not
13751377 issiso = sys .issiso () or (input is not None and output is not None )
13761378
1379+ # Select only the given input and output, if any
1380+ input_index = sys .input_index if input is None else {k : 0 for k , v in sys .input_index .items () if v == input }
1381+ output_index = sys .output_index if output is None else {k : 0 for k , v in sys .output_index .items () if v == output }
1382+
13771383 return TimeResponseData (
13781384 response .time , yout , xout , uout , issiso = issiso ,
1385+ output_labels = output_index , input_labels = input_index ,
1386+ state_labels = sys .state_index ,
13791387 transpose = transpose , return_x = return_x , squeeze = squeeze )
13801388
13811389
@@ -1704,9 +1712,14 @@ def initial_response(sys, T=None, X0=0., input=0, output=None, T_num=None,
17041712 # Figure out if the system is SISO or not
17051713 issiso = sys .issiso () or (input is not None and output is not None )
17061714
1715+ # Select only the given output, if any
1716+ output_index = sys .output_index if output is None else {k : 0 for k , v in sys .output_index .items () if v == output }
1717+
17071718 # Store the response without an input
17081719 return TimeResponseData (
17091720 response .t , response .y , response .x , None , issiso = issiso ,
1721+ output_labels = output_index , input_labels = None ,
1722+ state_labels = sys .state_index ,
17101723 transpose = transpose , return_x = return_x , squeeze = squeeze )
17111724
17121725
@@ -1869,8 +1882,14 @@ def impulse_response(sys, T=None, X0=0., input=None, output=None, T_num=None,
18691882 # Figure out if the system is SISO or not
18701883 issiso = sys .issiso () or (input is not None and output is not None )
18711884
1885+ # Select only the given input and output, if any
1886+ input_index = sys .input_index if input is None else {k : 0 for k , v in sys .input_index .items () if v == input }
1887+ output_index = sys .output_index if output is None else {k : 0 for k , v in sys .output_index .items () if v == output }
1888+
18721889 return TimeResponseData (
18731890 response .time , yout , xout , uout , issiso = issiso ,
1891+ output_labels = output_index , input_labels = input_index ,
1892+ state_labels = sys .state_index ,
18741893 transpose = transpose , return_x = return_x , squeeze = squeeze )
18751894
18761895
0 commit comments