Skip to content

Commit 84a1e4d

Browse files
committed
bugfix: allow sysname override in linearize if copy_names is False
1 parent 2b2de2b commit 84a1e4d

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

control/nlsys.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ def feedback(self, other=1, sign=-1, params=None):
517517
return newsys
518518

519519
def linearize(self, x0, u0, t=0, params=None, eps=1e-6,
520-
name=None, copy_names=False, **kwargs):
520+
copy_names=False, **kwargs):
521521
"""Linearize an input/output system at a given state and input.
522522
523523
Return the linearization of an input/output system at a given state
@@ -582,8 +582,6 @@ def linearize(self, x0, u0, t=0, params=None, eps=1e-6,
582582
# Set the system name, inputs, outputs, and states
583583
if copy_names:
584584
linsys._copy_names(self, prefix_suffix_name='linearized')
585-
if name is not None:
586-
linsys.name = name
587585

588586
# re-init to include desired signal names if names were provided
589587
return StateSpace(linsys, **kwargs)

control/tests/iosys_test.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,8 @@ def test_linearize(self, tsys, kincar):
234234
@pytest.mark.usefixtures("editsdefaults")
235235
def test_linearize_named_signals(self, kincar):
236236
# Full form of the call
237-
linearized = kincar.linearize([0, 0, 0], [0, 0], copy_names=True,
238-
name='linearized')
237+
linearized = kincar.linearize(
238+
[0, 0, 0], [0, 0], copy_names=True, name='linearized')
239239
assert linearized.name == 'linearized'
240240
assert linearized.find_input('v') == 0
241241
assert linearized.find_input('phi') == 1
@@ -256,8 +256,8 @@ def test_linearize_named_signals(self, kincar):
256256
assert lin_nocopy.find_state('x') is None
257257

258258
# if signal names are provided, they should override those of kincar
259-
linearized_newnames = kincar.linearize([0, 0, 0], [0, 0],
260-
name='linearized',
259+
linearized_newnames = kincar.linearize(
260+
[0, 0, 0], [0, 0], name='linearized',
261261
copy_names=True, inputs=['v2', 'phi2'], outputs=['x2','y2'])
262262
assert linearized_newnames.name == 'linearized'
263263
assert linearized_newnames.find_input('v2') == 0
@@ -269,6 +269,11 @@ def test_linearize_named_signals(self, kincar):
269269
assert linearized_newnames.find_output('x') is None
270270
assert linearized_newnames.find_output('y') is None
271271

272+
# if system name is provided but copy_names is false, override name
273+
linearized_newsysname = kincar.linearize(
274+
[0, 0, 0], [0, 0], name='newname', copy_names=False)
275+
assert linearized_newsysname.name == 'newname'
276+
272277
# Test legacy version as well
273278
with pytest.warns(UserWarning, match="NumPy matrix class no longer"):
274279
ct.use_legacy_defaults('0.8.4')

0 commit comments

Comments
 (0)