@@ -1111,6 +1111,8 @@ def forced_response(sys, T=None, U=0., X0=0., transpose=False,
1111
1111
1112
1112
return TimeResponseData (
1113
1113
tout , yout , xout , U , issiso = sys .issiso (),
1114
+ output_labels = sys .output_index , input_labels = sys .input_index ,
1115
+ state_labels = sys .state_index ,
1114
1116
transpose = transpose , return_x = return_x , squeeze = squeeze )
1115
1117
1116
1118
@@ -1374,8 +1376,14 @@ def step_response(sys, T=None, X0=0., input=None, output=None, T_num=None,
1374
1376
# Figure out if the system is SISO or not
1375
1377
issiso = sys .issiso () or (input is not None and output is not None )
1376
1378
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
+
1377
1383
return TimeResponseData (
1378
1384
response .time , yout , xout , uout , issiso = issiso ,
1385
+ output_labels = output_index , input_labels = input_index ,
1386
+ state_labels = sys .state_index ,
1379
1387
transpose = transpose , return_x = return_x , squeeze = squeeze )
1380
1388
1381
1389
@@ -1704,9 +1712,14 @@ def initial_response(sys, T=None, X0=0., input=0, output=None, T_num=None,
1704
1712
# Figure out if the system is SISO or not
1705
1713
issiso = sys .issiso () or (input is not None and output is not None )
1706
1714
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
+
1707
1718
# Store the response without an input
1708
1719
return TimeResponseData (
1709
1720
response .t , response .y , response .x , None , issiso = issiso ,
1721
+ output_labels = output_index , input_labels = None ,
1722
+ state_labels = sys .state_index ,
1710
1723
transpose = transpose , return_x = return_x , squeeze = squeeze )
1711
1724
1712
1725
@@ -1869,8 +1882,14 @@ def impulse_response(sys, T=None, X0=0., input=None, output=None, T_num=None,
1869
1882
# Figure out if the system is SISO or not
1870
1883
issiso = sys .issiso () or (input is not None and output is not None )
1871
1884
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
+
1872
1889
return TimeResponseData (
1873
1890
response .time , yout , xout , uout , issiso = issiso ,
1891
+ output_labels = output_index , input_labels = input_index ,
1892
+ state_labels = sys .state_index ,
1874
1893
transpose = transpose , return_x = return_x , squeeze = squeeze )
1875
1894
1876
1895
0 commit comments