Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b875987

Browse files
committed
address remaining @sawyerbfuller review comments
1 parent 120e333 commit b875987

File tree

3 files changed

+41
-5
lines changed

3 files changed

+41
-5
lines changed

control/lti.py

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,43 @@ def __init__(self, inputs=1, outputs=1, states=None, name=None, **kwargs):
4444
def __call__(self, x, squeeze=None, warn_infinite=True):
4545
"""Evaluate system transfer function at point in complex plane.
4646
47-
See `StateSpace.__call__` and `TransferFunction.__call__` for details.
47+
Returns the value of the system's transfer function at a point `x`
48+
in the complex plane, where `x` is `s` for continuous-time systems
49+
and `z` for discrete-time systems.
50+
51+
By default, a (complex) scalar will be returned for SISO systems
52+
and a p x m array will be return for MIMO systems with m inputs and
53+
p outputs. This can be changed using the `squeeze` keyword.
54+
55+
To evaluate at a frequency `omega` in radians per second,
56+
enter ``x = omega * 1j`` for continuous-time systems,
57+
``x = exp(1j * omega * dt)`` for discrete-time systems, or
58+
use the `~LTI.frequency_response` method.
59+
60+
Parameters
61+
----------
62+
x : complex or complex 1D array_like
63+
Complex value(s) at which transfer function will be evaluated.
64+
squeeze : bool, optional
65+
Squeeze output, as described below. Default value can be set
66+
using `config.defaults['control.squeeze_frequency_response']`.
67+
warn_infinite : bool, optional
68+
If set to False, turn off divide by zero warning.
69+
70+
Returns
71+
-------
72+
fresp : complex ndarray
73+
The value of the system transfer function at `x`. If the system
74+
is SISO and `squeeze` is not True, the shape of the array matches
75+
the shape of `x`. If the system is not SISO or `squeeze` is
76+
False, the first two dimensions of the array are indices for the
77+
output and input and the remaining dimensions match `x`. If
78+
`squeeze` is True then single-dimensional axes are removed.
79+
80+
Notes
81+
-----
82+
See `FrequencyResponseData`.__call__`, `StateSpace.__call__`,
83+
`TransferFunction.__call__` for class-specific details.
4884
4985
"""
5086
raise NotImplementedError("not implemented in subclass")
@@ -117,7 +153,7 @@ def frequency_response(self, omega=None, squeeze=None):
117153

118154
def dcgain(self):
119155
"""Return the zero-frequency (DC) gain."""
120-
return NotImplemented
156+
raise NotImplementedError("dcgain not defined for subclass")
121157

122158
def _dcgain(self, warn_infinite):
123159
zeroresp = self(0 if self.isctime() else 1,
@@ -443,8 +479,7 @@ def evalfr(sys, x, squeeze=None):
443479
444480
See Also
445481
--------
446-
StateSpace.__call__, TransferFunction.__call__, frequency_response, \
447-
bode_plot
482+
LTI.__call__, frequency_response, bode_plot
448483
449484
Notes
450485
-----

control/statesp.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1746,7 +1746,7 @@ def ss(*args, **kwargs):
17461746
17471747
See Also
17481748
--------
1749-
tf, ss2tf, tf2ss, zpk
1749+
StateSpace, nlsys, tf, ss2tf, tf2ss, zpk
17501750
17511751
Notes
17521752
-----

doc/xferfcn.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ domain properties of a linear systems:
3838
frequency_response
3939
phase_crossover_frequencies
4040
singular_values_response
41+
stability_margins
4142
tfdata
4243

4344
These functions work on both state space and transfer function models.

0 commit comments

Comments
 (0)