@@ -1376,9 +1376,13 @@ def step_response(sys, T=None, X0=0., input=None, output=None, T_num=None,
13761376 # Figure out if the system is SISO or not
13771377 issiso = sys .issiso () or (input is not None and output is not None )
13781378
1379+ # Select only the given input and output, if any
1380+ input_index = {k : v for k , v in sys .input_index .items () if v is input } if input else sys .input_index
1381+ output_index = {k : v for k , v in sys .output_index .items () if v is output } if output else sys .output_index
1382+
13791383 return TimeResponseData (
13801384 response .time , yout , xout , uout , issiso = issiso ,
1381- output_labels = sys . output_index , input_labels = sys . input_index ,
1385+ output_labels = output_index , input_labels = input_index ,
13821386 state_labels = sys .state_index ,
13831387 transpose = transpose , return_x = return_x , squeeze = squeeze )
13841388
@@ -1708,10 +1712,14 @@ def initial_response(sys, T=None, X0=0., input=0, output=None, T_num=None,
17081712 # Figure out if the system is SISO or not
17091713 issiso = sys .issiso () or (input is not None and output is not None )
17101714
1715+ # Select only the given input and output, if any
1716+ input_index = {k : v for k , v in sys .input_index .items () if v is input } if input else sys .input_index
1717+ output_index = {k : v for k , v in sys .output_index .items () if v is output } if output else sys .output_index
1718+
17111719 # Store the response without an input
17121720 return TimeResponseData (
17131721 response .t , response .y , response .x , None , issiso = issiso ,
1714- output_labels = sys . output_index , input_labels = sys . input_index ,
1722+ output_labels = output_index , input_labels = input_index ,
17151723 state_labels = sys .state_index ,
17161724 transpose = transpose , return_x = return_x , squeeze = squeeze )
17171725
@@ -1875,9 +1883,13 @@ def impulse_response(sys, T=None, X0=0., input=None, output=None, T_num=None,
18751883 # Figure out if the system is SISO or not
18761884 issiso = sys .issiso () or (input is not None and output is not None )
18771885
1886+ # Select only the given input and output, if any
1887+ input_index = {k : v for k , v in sys .input_index .items () if v is input } if input else sys .input_index
1888+ output_index = {k : v for k , v in sys .output_index .items () if v is output } if output else sys .output_index
1889+
18781890 return TimeResponseData (
18791891 response .time , yout , xout , uout , issiso = issiso ,
1880- output_labels = sys . output_index , input_labels = sys . input_index ,
1892+ output_labels = output_index , input_labels = input_index ,
18811893 state_labels = sys .state_index ,
18821894 transpose = transpose , return_x = return_x , squeeze = squeeze )
18831895
0 commit comments