def testMIMO(self): sys = StateSpace([[-0.5, 0.0], [0.0, -1.0]], [[1.0, 0.0], [0.0, 1.0]], [[1.0, 0.0], [0.0, 1.0]], [[0.0, 0.0], [0.0, 0.0]]) omega = np.logspace(-1, 2, 10) f1 = FRD(sys, omega) np.testing.assert_array_almost_equal( sys.frequency_response([0.1, 1.0, 10])[0], f1.frequency_response([0.1, 1.0, 10])[0]) np.testing.assert_array_almost_equal( sys.frequency_response([0.1, 1.0, 10])[1], f1.frequency_response([0.1, 1.0, 10])[1])
def test_freq_resp(self): """Evaluate the frequency response at multiple frequencies.""" A = [[-2, 0.5], [0.5, -0.3]] B = [[0.3, -1.3], [0.1, 0.]] C = [[0., 0.1], [-0.3, -0.2]] D = [[0., -0.8], [-0.3, 0.]] sys = StateSpace(A, B, C, D) true_mag = [[[0.0852992637230322, 0.00103596611395218], [0.935374692849736, 0.799380720864549]], [[0.55656854563842, 0.301542699860857], [0.609178071542849, 0.0382108097985257]]] true_phase = [[[-0.566195599644593, -1.68063565332582], [3.0465958317514, 3.14141384339534]], [[2.90457947657161, 3.10601268291914], [-0.438157380501337, -1.40720969147217]]] true_omega = [0.1, 10.] mag, phase, omega = sys.frequency_response(true_omega) np.testing.assert_almost_equal(mag, true_mag) np.testing.assert_almost_equal(phase, true_phase) np.testing.assert_almost_equal(omega, true_omega) # Deprecated version of the call (should return warning) with pytest.warns(DeprecationWarning, match="will be removed"): mag, phase, omega = sys.freqresp(true_omega) np.testing.assert_almost_equal(mag, true_mag)