[Scipy-tickets] [SciPy] #1096: tf2ss and "Improper transfer function."
SciPy Trac
scipy-tickets@scipy....
Thu Jan 21 17:57:02 CST 2010
#1096: tf2ss and "Improper transfer function."
----------------------------------------------+-----------------------------
Reporter: jary | Owner: somebody
Type: defect | Status: needs_review
Priority: normal | Milestone: 0.7.1
Component: scipy.signal | Version: 0.7.0
Keywords: tf2ss transfer function impulse. |
----------------------------------------------+-----------------------------
Changes (by josefpktd):
* status: new => needs_review
Comment:
The error message could be more helpful, the requirement is that `den` is
at least
as long as `num`. the following works
signal.tf2ss(h, [1,0,0,0])
I didn't look closely enough to see why the length condition is required
in this
function, but in other function it is a requirement to work with numpy
polynomials.
So, I don't think your fix is the right solution.
But at least documentation and the error message could be improved
Here is a roundtrip example, that I managed a while ago
{{{
import numpy as np
from scipy import signal
dvec = np.array([1,2,3,4])
A1 = np.array([-dvec,[1,0,0,0],[0,1,0,0],[0,0,1,0]])
B1 = np.array([[1,0,0,0]]).T # wrong dimension, this requires D has one
column
B1 = np.eye(4)
C1 = np.array([[1,2,3,4]])
D1 = np.zeros((1,4))
print signal.ss2tf(A1,B1,C1,D1)
#same as
http://en.wikipedia.org/wiki/State_space_(controls)#Canonical_realizations
signal.ss2tf(*signal.tf2ss(*signal.ss2tf(A1,B1,C1,D1)))
np.testing.assert_almost_equal(signal.ss2tf(*signal.tf2ss(*signal.ss2tf(A1,B1,C1,D1)))[0],signal.ss2tf(A1,B1,C1,D1)[0])
}}}
this implies the following example:
{{{
signal.tf2ss(array([[ 0., 1., 2., 3., 4.]]), array([ 1., 1., 2.,
3., 4.]))
(array([[-1., -2., -3., -4.],
[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.]]), array([[ 1.],
[ 0.],
[ 0.],
[ 0.]]), array([[ 1., 2., 3., 4.]]), array([ 0.]))
}}}
My impression is that lti is a bit lonely, no tests and not enough
attention.
--
Ticket URL: <http://projects.scipy.org/scipy/ticket/1096#comment:3>
SciPy <http://www.scipy.org>
SciPy is open-source software for mathematics, science, and engineering.
More information about the Scipy-tickets
mailing list