Beispiel #1
0
def test_Transfer_to_array():
    G = Transfer(1, [1, 1])
    H = Transfer(2, 10)
    with assert_raises(TypeError):
        G.to_array()

    assert_equal(H.to_array(), np.array([[.2]]))
    assert_equal(Transfer(np.arange(9, 90, 9).reshape(3, 3),
                          9*np.ones((3, 3))).to_array(),
                 np.arange(1, 10).reshape(3, 3))
Beispiel #2
0
def test_Transfer_to_array():
    G = Transfer(1, [1, 1])
    H = Transfer(2, 10)
    with assert_raises(ValueError):
        G.to_array()

    assert_equal(H.to_array(), np.array([[.2]]))
    assert_equal(Transfer(np.arange(9, 90, 9).reshape(3, 3),
                          9*np.ones((3, 3))).to_array(),
                 np.arange(1, 10).reshape(3, 3))
Beispiel #3
0
def test_Transfer_algebra_matmul_rmatmul():

    G = Transfer([[1, [1, 1]]], [[[1, 2, 1], [1, 1]]])
    H = Transfer([[[1, 3]], [1]], [1, 2, 1])
    F = G @ H
    assert_almost_equal(F.num, np.array([[1, 3, 4]]))
    assert_almost_equal(F.den, np.array([[1, 4, 6, 4, 1]]))
    F = H @ G
    assert_almost_equal(F.num[0][0], np.array([[1, 3]]))
    assert_almost_equal(F.num[0][1], np.array([[1, 4, 3]]))
    assert_almost_equal(F.num[1][0], np.array([[1]]))
    assert_almost_equal(F.num[1][1], np.array([[1, 1]]))

    assert_almost_equal(F.den[0][0], np.array([[1, 4, 6, 4, 1]]))
    assert_almost_equal(F.den[0][1], np.array([[1, 3, 3, 1]]))
    assert_almost_equal(F.den[1][0], F.den[0][0])
    assert_almost_equal(F.den[1][1], F.den[0][1])

    F = Transfer(2) @ Transfer(np.eye(2)) @ Transfer(2)
    assert_equal(F.to_array(), 4 * np.eye(2))

    G = Transfer([[1, 2]], [1, 1])
    H = np.array([[2], [1]]) @ G
    assert_array_equal(H.num[0][0], np.array([[2.]]))
    assert_array_equal(H.num[0][1], np.array([[4.]]))
    assert_array_equal(H.num[1][0], np.array([[1.]]))
    assert_array_equal(H.num[1][1], np.array([[2.]]))

    G = Transfer([[1, 2]], [1, 1])
    H = G @ np.array([[2], [1]])
    assert H._isSISO
    assert_array_almost_equal(H.num, np.array([[4.]]))
    assert_array_almost_equal(H.den, np.array([[1., 1.]]))

    H = np.array([[2]]) @ G
    assert_array_equal(H.num[0][0], np.array([[2.]]))
    assert_array_equal(H.num[0][1], np.array([[4.]]))

    with assert_raises(ValueError):
        H = np.array([2 + 1j, 1]) * G

    J = H * 0.
    assert_array_equal(J.num[0][0], np.array([[0.]]))
    assert_array_equal(J.num[0][1], np.array([[0.]]))
    assert_array_equal(J.den[0][0], np.array([[1.]]))
    assert_array_equal(J.den[0][1], np.array([[1.]]))

    G = Transfer(1, [1, 1])
    H = G * 0.
    assert_array_equal(H.num, np.array([[0.]]))
    assert_array_equal(H.den, np.array([[1.]]))
Beispiel #4
0
def test_Transfer_algebra_matmul_rmatmul():

    G = Transfer([[1, [1, 1]]], [[[1, 2, 1], [1, 1]]])
    H = Transfer([[[1, 3]], [1]], [1, 2, 1])
    F = G @ H
    assert_almost_equal(F.num, np.array([[1, 3, 4]]))
    assert_almost_equal(F.den, np.array([[1, 4, 6, 4, 1]]))
    F = H @ G
    assert_almost_equal(F.num[0][0], np.array([[1, 3]]))
    assert_almost_equal(F.num[0][1], np.array([[1, 4, 3]]))
    assert_almost_equal(F.num[1][0], np.array([[1]]))
    assert_almost_equal(F.num[1][1], np.array([[1, 1]]))

    assert_almost_equal(F.den[0][0], np.array([[1, 4, 6, 4, 1]]))
    assert_almost_equal(F.den[0][1], np.array([[1, 3, 3, 1]]))
    assert_almost_equal(F.den[1][0], F.den[0][0])
    assert_almost_equal(F.den[1][1], F.den[0][1])

    F = Transfer(2) @ Transfer(np.eye(2)) @ Transfer(2)
    assert_equal(F.to_array(), 4*np.eye(2))

    G = Transfer([[1, 2]], [1, 1])
    H = np.array([[2], [1]]) @ G
    assert_array_equal(H.num[0][0], np.array([[2.]]))
    assert_array_equal(H.num[0][1], np.array([[4.]]))
    assert_array_equal(H.num[1][0], np.array([[1.]]))
    assert_array_equal(H.num[1][1], np.array([[2.]]))

    G = Transfer([[1, 2]], [1, 1])
    H = G @ np.array([[2], [1]])
    assert H._isSISO
    assert_array_almost_equal(H.num, np.array([[4.]]))
    assert_array_almost_equal(H.den, np.array([[1., 1.]]))

    H = np.array([[2]]) @ G
    assert_array_equal(H.num[0][0], np.array([[2.]]))
    assert_array_equal(H.num[0][1], np.array([[4.]]))

    with assert_raises(ValueError):
        H = np.array([2+1j, 1]) * G

    J = H*0.
    assert_array_equal(J.num[0][0], np.array([[0.]]))
    assert_array_equal(J.num[0][1], np.array([[0.]]))
    assert_array_equal(J.den[0][0], np.array([[1.]]))
    assert_array_equal(J.den[0][1], np.array([[1.]]))

    G = Transfer(1, [1, 1])
    H = G*0.
    assert_array_equal(H.num, np.array([[0.]]))
    assert_array_equal(H.den, np.array([[1.]]))
Beispiel #5
0
def test_Transfer_algebra_matmul_rmatmul():

    G = Transfer([[1, [1, 1]]], [[[1, 2, 1], [1, 1]]])
    H = Transfer([[[1, 3]], [1]], [1, 2, 1])
    F = G @ H
    assert_almost_equal(F.num, np.array([[1, 3, 4]]))
    assert_almost_equal(F.den, np.array([[1, 4, 6, 4, 1]]))
    F = H @ G
    assert_almost_equal(F.num[0][0], np.array([[1, 3]]))
    assert_almost_equal(F.num[0][1], np.array([[1, 4, 3]]))
    assert_almost_equal(F.num[1][0], np.array([[1]]))
    assert_almost_equal(F.num[1][1], np.array([[1, 1]]))

    assert_almost_equal(F.den[0][0], np.array([[1, 4, 6, 4, 1]]))
    assert_almost_equal(F.den[0][1], np.array([[1, 3, 3, 1]]))
    assert_almost_equal(F.den[1][0], F.den[0][0])
    assert_almost_equal(F.den[1][1], F.den[0][1])

    F = Transfer(2) @ Transfer(np.eye(2)) @ Transfer(2)
    assert_equal(F.to_array(), 4*np.eye(2))