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))
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))
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.]]))
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.]]))
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))