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

Commit7ee0c0e

Browse files
committed
fix up copying of signal names
1 parent91466d1 commit7ee0c0e

File tree

3 files changed

+40
-8
lines changed

3 files changed

+40
-8
lines changed

‎control/statesp.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1521,7 +1521,6 @@ def output(self, t, x, u=None, params=None):
15211521

15221522

15231523
# TODO: add discrete time check
1524-
# TODO: copy signal names
15251524
def_convert_to_statespace(sys):
15261525
"""Convert a system to state space form (if needed).
15271526

‎control/tests/xferfcn_test.py

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
importoperator
99

1010
importcontrolasct
11-
fromcontrolimportStateSpace,TransferFunction,rss,ss2tf,evalfr
11+
fromcontrolimportStateSpace,TransferFunction,rss,evalfr
12+
fromcontrolimportss,ss2tf,tf,tf2ss
1213
fromcontrolimportisctime,isdtime,sample_system,defaults
1314
fromcontrol.statespimport_convert_to_statespace
1415
fromcontrol.xferfcnimport_convert_to_transfer_function
@@ -1111,3 +1112,34 @@ def test_zpk(zeros, poles, gain, args, kwargs):
11111112

11121113
ifkwargs.get('name'):
11131114
assertsys.name==kwargs.get('name')
1115+
1116+
@pytest.mark.parametrize("create, args, kwargs, convert", [
1117+
(StateSpace, ([-1], [1], [1], [0]), {},ss2tf),
1118+
(StateSpace, ([-1], [1], [1], [0]), {},ss),
1119+
(StateSpace, ([-1], [1], [1], [0]), {},tf),
1120+
(StateSpace, ([-1], [1], [1], [0]),dict(inputs='i',outputs='o'),ss2tf),
1121+
(StateSpace, ([-1], [1], [1], [0]),dict(inputs=1,outputs=1),ss2tf),
1122+
(StateSpace, ([-1], [1], [1], [0]),dict(inputs='i',outputs='o'),ss),
1123+
(StateSpace, ([-1], [1], [1], [0]),dict(inputs='i',outputs='o'),tf),
1124+
(TransferFunction, ([1], [1,1]), {},tf2ss),
1125+
(TransferFunction, ([1], [1,1]), {},tf),
1126+
(TransferFunction, ([1], [1,1]), {},ss),
1127+
(TransferFunction, ([1], [1,1]),dict(inputs='i',outputs='o'),tf2ss),
1128+
(TransferFunction, ([1], [1,1]),dict(inputs=1,outputs=1),tf2ss),
1129+
(TransferFunction, ([1], [1,1]),dict(inputs='i',outputs='o'),tf),
1130+
(TransferFunction, ([1], [1,1]),dict(inputs='i',outputs='o'),ss),
1131+
])
1132+
deftest_copy_names(create,args,kwargs,convert):
1133+
# Convert a system with no renaming
1134+
sys=create(*args,**kwargs)
1135+
cpy=convert(sys)
1136+
1137+
assertcpy.input_labels==sys.input_labels
1138+
assertcpy.input_labels==sys.input_labels
1139+
ifcpy.nstatesisnotNoneandsys.nstatesisnotNone:
1140+
assertcpy.state_labels==sys.state_labels
1141+
1142+
# Relabel inputs and outputs
1143+
cpy=convert(sys,inputs='myin',outputs='myout')
1144+
assertcpy.input_labels== ['myin']
1145+
assertcpy.output_labels== ['myout']

‎control/xferfcn.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1424,16 +1424,13 @@ def _convert_to_transfer_function(sys, inputs=1, outputs=1):
14241424
num=squeeze(num)# Convert to 1D array
14251425
den=squeeze(den)# Probably not needed
14261426

1427-
returnTransferFunction(
1428-
num,den,sys.dt,inputs=sys.input_labels,
1429-
outputs=sys.output_labels)
1427+
returnTransferFunction(num,den,sys.dt)
14301428

14311429
elifisinstance(sys, (int,float,complex,np.number)):
14321430
num= [[[sys]forjinrange(inputs)]foriinrange(outputs)]
14331431
den= [[[1]forjinrange(inputs)]foriinrange(outputs)]
14341432

1435-
returnTransferFunction(
1436-
num,den,inputs=inputs,outputs=outputs)
1433+
returnTransferFunction(num,den)
14371434

14381435
elifisinstance(sys,FrequencyResponseData):
14391436
raiseTypeError("Can't convert given FRD to TransferFunction system.")
@@ -1623,7 +1620,6 @@ def zpk(zeros, poles, gain, *args, **kwargs):
16231620
returnTransferFunction(num,den,*args,**kwargs)
16241621

16251622

1626-
# TODO: copy signal names
16271623
defss2tf(*args,**kwargs):
16281624

16291625
"""ss2tf(sys)
@@ -1705,6 +1701,11 @@ def ss2tf(*args, **kwargs):
17051701
iflen(args)==1:
17061702
sys=args[0]
17071703
ifisinstance(sys,StateSpace):
1704+
kwargs=kwargs.copy()
1705+
ifnotkwargs.get('inputs'):
1706+
kwargs['inputs']=sys.input_labels
1707+
ifnotkwargs.get('outputs'):
1708+
kwargs['outputs']=sys.output_labels
17081709
returnTransferFunction(
17091710
_convert_to_transfer_function(sys),**kwargs)
17101711
else:

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp