예제 #1
0
def test_minimal_realization_State():
    M = array([[-6.5, 0.5, 6.5, -6.5, 0., 1., 0.],
               [-0.5, -5.5, -5.5, 5.5, 2., 1., 2.],
               [-0.5, 0.5, 0.5, -6.5, 3., 4., 3.],
               [-0.5, 0.5, -5.5, -0.5, 3., 2., 3.],
               [1., 1., 0., 0., 0., 0., 0.]])
    G = State(*matrix_slice(M, (1, 4), corner='sw'))
    H = minimal_realization(G)
    assert H.a.shape == (2, 2)
    #
    G = State(
        array([[0., 1., 0., 0., 0.], [-0.1, -0.5, 1., -1., 0.],
               [0., 0., 0., 1., 0.], [0., 0., 0., 0., 1.],
               [0., 3.5, 1., -2., 2.]]), array([[0.], [1.], [0.], [0.], [1.]]),
        array([[0., 3.5, 1., -1., 0.]]), array([[1.]]))
    H = minimal_realization(G)
    assert H.a.shape == (4, 4)
    #
    G = State(
        array([[-2., 0., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.],
               [0., -12., 4., 3.]]),
        array([[1., 0.], [0., 0.], [0., 0.], [0., 1.]]),
        array([[1., -9., 0., 0.], [0., -20., 0., 5.]]),
        array([[0., 0.], [0., 1.]]))
    H = minimal_realization(G)
    assert H.a.shape == (3, 3)
예제 #2
0
def test_minimal_realization_State():
    M = array([[-6.5, 0.5, 6.5, -6.5, 0., 1., 0.],
               [-0.5, -5.5, -5.5, 5.5, 2., 1., 2.],
               [-0.5, 0.5, 0.5, -6.5, 3., 4., 3.],
               [-0.5, 0.5, -5.5, -0.5, 3., 2., 3.],
               [1., 1., 0., 0., 0., 0., 0.]])
    G = State(*matrix_slice(M, (1, 4), corner='sw'))
    H = minimal_realization(G)
    assert H.a.shape == (2, 2)
    #
    G = State(array([[0., 1., 0., 0., 0.],
                     [-0.1, -0.5, 1., -1., 0.],
                     [0., 0., 0., 1., 0.],
                     [0., 0., 0., 0., 1.],
                     [0., 3.5, 1., -2., 2.]]),
              array([[0.], [1.], [0.], [0.], [1.]]),
              array([[0., 3.5, 1., -1., 0.]]),
              array([[1.]]))
    H = minimal_realization(G)
    assert H.a.shape == (4, 4)
    #
    G = State(array([[-2., 0., 0., 0.],
                     [0., 0., 1., 0.],
                     [0., 0., 0., 1.],
                     [0., -12., 4., 3.]]),
              array([[1., 0.], [0., 0.], [0., 0.], [0., 1.]]),
              array([[1., -9., 0., 0.], [0., -20., 0., 5.]]),
              array([[0., 0.], [0., 1.]]))
    H = minimal_realization(G)
    assert H.a.shape == (3, 3)
예제 #3
0
def test_minimal_realization_Transfer():
    G = Transfer(
        [1., -8., 28., -58., 67., -30.],
        poly([1, 2, 3., 2, 3., 4, 1 + (2 + 1e-6) * 1j, 1 - (2 + 1e-6) * 1j]))
    H_f = minimal_realization(G)
    assert_almost_equal(H_f.num, array([[1]]))
    H_nf = minimal_realization(G, tol=1e-7)
    assert_almost_equal(H_nf.num, array([[1., -7., 21., -37., 30.]]))
예제 #4
0
def test_minimal_realization_Transfer():
    G = Transfer([1., -8., 28., -58., 67., -30.],
                 poly([1, 2, 3., 2, 3., 4, 1+(2+1e-6)*1j, 1-(2+1e-6)*1j]))
    H_f = minimal_realization(G)
    assert_almost_equal(H_f.num, array([[1]]))
    H_nf = minimal_realization(G, tol=1e-7)
    assert_almost_equal(H_nf.num, array([[1., -7., 21., -37., 30.]]))
    H = minimal_realization(Transfer(eye(4)))
    assert H._isgain
    assert not H._isSISO
    H = minimal_realization(State(eye(4)))
    assert H._isgain
    assert not H._isSISO
예제 #5
0
def test_minimal_realization_State():
    M = array([[-6.5, 0.5, 6.5, -6.5, 0., 1., 0.],
               [-0.5, -5.5, -5.5, 5.5, 2., 1., 2.],
               [-0.5, 0.5, 0.5, -6.5, 3., 4., 3.],
               [-0.5, 0.5, -5.5, -0.5, 3., 2., 3.],
               [1., 1., 0., 0., 0., 0., 0.]])
    G = State(*matrix_slice(M, (1, 4), corner='sw'))
    H = minimal_realization(G)
    assert_(H.a.shape, (2, 2))