@@ -694,7 +694,10 @@ def _process_labels(labels, signal, length):
694694 raise ValueError ("Name dictionary for %s is incomplete" % signal )
695695
696696 # Convert labels to a list
697- labels = list (labels )
697+ if isinstance (labels , str ):
698+ labels = [labels ]
699+ else :
700+ labels = list (labels )
698701
699702 # Make sure the signal list is the right length and type
700703 if len (labels ) != length :
@@ -1111,6 +1114,8 @@ def forced_response(sys, T=None, U=0., X0=0., transpose=False,
11111114
11121115 return TimeResponseData (
11131116 tout , yout , xout , U , issiso = sys .issiso (),
1117+ output_labels = sys .output_labels , input_labels = sys .input_labels ,
1118+ state_labels = sys .state_labels ,
11141119 transpose = transpose , return_x = return_x , squeeze = squeeze )
11151120
11161121
@@ -1374,8 +1379,16 @@ def step_response(sys, T=None, X0=0., input=None, output=None, T_num=None,
13741379 # Figure out if the system is SISO or not
13751380 issiso = sys .issiso () or (input is not None and output is not None )
13761381
1382+ # Select only the given input and output, if any
1383+ input_labels = sys .input_labels if input is None \
1384+ else sys .input_labels [input ]
1385+ output_labels = sys .output_labels if output is None \
1386+ else sys .output_labels [output ]
1387+
13771388 return TimeResponseData (
13781389 response .time , yout , xout , uout , issiso = issiso ,
1390+ output_labels = output_labels , input_labels = input_labels ,
1391+ state_labels = sys .state_labels ,
13791392 transpose = transpose , return_x = return_x , squeeze = squeeze )
13801393
13811394
@@ -1704,9 +1717,15 @@ def initial_response(sys, T=None, X0=0., input=0, output=None, T_num=None,
17041717 # Figure out if the system is SISO or not
17051718 issiso = sys .issiso () or (input is not None and output is not None )
17061719
1720+ # Select only the given output, if any
1721+ output_labels = sys .output_labels if output is None \
1722+ else sys .output_labels [0 ]
1723+
17071724 # Store the response without an input
17081725 return TimeResponseData (
17091726 response .t , response .y , response .x , None , issiso = issiso ,
1727+ output_labels = output_labels , input_labels = None ,
1728+ state_labels = sys .state_labels ,
17101729 transpose = transpose , return_x = return_x , squeeze = squeeze )
17111730
17121731
@@ -1798,7 +1817,7 @@ def impulse_response(sys, T=None, X0=0., input=None, output=None, T_num=None,
17981817 -----
17991818 This function uses the `forced_response` function to compute the time
18001819 response. For continuous time systems, the initial condition is altered to
1801- account for the initial impulse. For discrete-time aystems, the impulse is
1820+ account for the initial impulse. For discrete-time aystems, the impulse is
18021821 sized so that it has unit area.
18031822
18041823 Examples
@@ -1869,8 +1888,16 @@ def impulse_response(sys, T=None, X0=0., input=None, output=None, T_num=None,
18691888 # Figure out if the system is SISO or not
18701889 issiso = sys .issiso () or (input is not None and output is not None )
18711890
1891+ # Select only the given input and output, if any
1892+ input_labels = sys .input_labels if input is None \
1893+ else sys .input_labels [input ]
1894+ output_labels = sys .output_labels if output is None \
1895+ else sys .output_labels [output ]
1896+
18721897 return TimeResponseData (
18731898 response .time , yout , xout , uout , issiso = issiso ,
1899+ output_labels = output_labels , input_labels = input_labels ,
1900+ state_labels = sys .state_labels ,
18741901 transpose = transpose , return_x = return_x , squeeze = squeeze )
18751902
18761903
0 commit comments