Skip to content

Commit 7674813

Browse files
Add missing labels when returning TimeResponseData
1 parent 9c26e22 commit 7674813

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

control/timeresp.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)