Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit78f5aec

Browse files
committed
fix bug in namedio unit test that was treating static SS systems the same as transfer functions. tests to track down missing names on some systems when converting to LinearIOSystem
1 parent999189c commit78f5aec

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

‎control/tests/namedio_test.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,10 @@ def test_named_ss():
9090
(lambdat,x,u,params:-x,None),
9191
{'inputs':2,'outputs':2,'states':2}],
9292
[ct.ss, ([[1,2], [3,4]], [[0], [1]], [[1,0]],0), {}],
93+
[ct.ss, ([], [], [],3), {}],# static system
9394
[ct.StateSpace, ([[1,2], [3,4]], [[0], [1]], [[1,0]],0), {}],
9495
[ct.tf, ([1,2], [3,4,5]), {}],
96+
[ct.tf, (2,3), {}],# static system
9597
[ct.TransferFunction, ([1,2], [3,4,5]), {}],
9698
])
9799
deftest_io_naming(fun,args,kwargs):
@@ -112,7 +114,7 @@ def test_io_naming(fun, args, kwargs):
112114
assertsys_g.name=='sys[0]'
113115
assertsys_g.input_labels== [f'u[{i}]'foriinrange(sys_g.ninputs)]
114116
assertsys_g.output_labels== [f'y[{i}]'foriinrange(sys_g.noutputs)]
115-
ifsys_g.nstates:
117+
ifsys_g.nstatesisnotNone:
116118
assertsys_g.state_labels== [f'x[{i}]'foriinrange(sys_g.nstates)]
117119

118120
#
@@ -128,7 +130,7 @@ def test_io_naming(fun, args, kwargs):
128130
sys_r.set_outputs(output_labels)
129131
assertsys_r.output_labels==output_labels
130132

131-
ifsys_g.nstates:
133+
ifsys_g.nstatesisnotNone:
132134
state_labels= [f'x{i}'foriinrange(sys_g.nstates)]
133135
sys_r.set_states(state_labels)
134136
assertsys_r.state_labels==state_labels
@@ -143,7 +145,7 @@ def test_io_naming(fun, args, kwargs):
143145
sys_k=fun(state_labels,output_labels,input_labels,name='mysys')
144146

145147
elifsys_g.nstatesisNone:
146-
# Don't pass state labels
148+
# Don't pass state labels if TransferFunction
147149
sys_k=fun(
148150
*args,inputs=input_labels,outputs=output_labels,name='mysys')
149151

@@ -155,7 +157,7 @@ def test_io_naming(fun, args, kwargs):
155157
assertsys_k.name=='mysys'
156158
assertsys_k.input_labels==input_labels
157159
assertsys_k.output_labels==output_labels
158-
ifsys_g.nstates:
160+
ifsys_g.nstatesisnotNone:
159161
assertsys_k.state_labels==state_labels
160162

161163
#
@@ -193,6 +195,24 @@ def test_io_naming(fun, args, kwargs):
193195
assertsys_tf.input_labels==input_labels
194196
assertsys_tf.output_labels==output_labels
195197

198+
#
199+
# Convert the system to a LinearIOSystem and make sure labels transfer
200+
#
201+
ifnotisinstance(
202+
sys_r, (ct.FrequencyResponseData,ct.NonlinearIOSystem))and \
203+
ct.slycot_check():
204+
sys_lio=ct.LinearIOSystem(sys_r)
205+
assertsys_lio!=sys_r
206+
assertsys_lio.input_labels==input_labels
207+
assertsys_lio.output_labels==output_labels
208+
209+
# Reassign system and signal names
210+
sys_lio=ct.LinearIOSystem(
211+
sys_g,inputs=input_labels,outputs=output_labels,name='new')
212+
assertsys_lio.name=='new'
213+
assertsys_lio.input_labels==input_labels
214+
assertsys_lio.output_labels==output_labels
215+
196216

197217
# Internal testing of StateSpace initialization
198218
deftest_init_namedif():

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp