def test_add_inconsistent_dimension(self):
     """Add two transfer function matrices of different sizes."""
     sys1 = TransferFunction([[[1., 2.]]], [[[4., 5.]]])
     sys2 = TransferFunction([[[4., 3.]], [[1., 2.]]],
                             [[[1., 6.]], [[2., 4.]]])
     with pytest.raises(ValueError):
         sys1.__add__(sys2)
     with pytest.raises(ValueError):
         sys1.__sub__(sys2)
     with pytest.raises(ValueError):
         sys1.__radd__(sys2)
     with pytest.raises(ValueError):
         sys1.__rsub__(sys2)
    def test_size_mismatch(self):
        """Test size mismacht"""
        sys1 = ss2tf(rss(2, 2, 2))

        # Different number of inputs
        sys2 = ss2tf(rss(3, 1, 2))
        with pytest.raises(ValueError):
            TransferFunction.__add__(sys1, sys2)

        # Different number of outputs
        sys2 = ss2tf(rss(3, 2, 1))
        with pytest.raises(ValueError):
            TransferFunction.__add__(sys1, sys2)

        # Inputs and outputs don't match
        with pytest.raises(ValueError):
            TransferFunction.__mul__(sys2, sys1)

        # Feedback mismatch (MIMO not implemented)
        with pytest.raises(NotImplementedError):
            TransferFunction.feedback(sys2, sys1)
Beispiel #3
0
    def testAddition(self, tsys):
        # State space addition
        sys = tsys.siso_ss1 + tsys.siso_ss1d
        sys = tsys.siso_ss1 + tsys.siso_ss1c
        sys = tsys.siso_ss1c + tsys.siso_ss1
        sys = tsys.siso_ss1d + tsys.siso_ss1
        sys = tsys.siso_ss1c + tsys.siso_ss1c
        sys = tsys.siso_ss1d + tsys.siso_ss1d
        sys = tsys.siso_ss3d + tsys.siso_ss3d
        sys = tsys.siso_ss1d + tsys.siso_ss3d

        with pytest.raises(ValueError):
            StateSpace.__add__(tsys.mimo_ss1c, tsys.mimo_ss1d)
        with pytest.raises(ValueError):
            StateSpace.__add__(tsys.mimo_ss1d, tsys.mimo_ss2d)

        # Transfer function addition
        sys = tsys.siso_tf1 + tsys.siso_tf1d
        sys = tsys.siso_tf1 + tsys.siso_tf1c
        sys = tsys.siso_tf1c + tsys.siso_tf1
        sys = tsys.siso_tf1d + tsys.siso_tf1
        sys = tsys.siso_tf1c + tsys.siso_tf1c
        sys = tsys.siso_tf1d + tsys.siso_tf1d
        sys = tsys.siso_tf2d + tsys.siso_tf2d
        sys = tsys.siso_tf1d + tsys.siso_tf3d

        with pytest.raises(ValueError):
            TransferFunction.__add__(tsys.siso_tf1c, tsys.siso_tf1d)
        with pytest.raises(ValueError):
            TransferFunction.__add__(tsys.siso_tf1d, tsys.siso_tf2d)

        # State space + transfer function
        sys = tsys.siso_ss1c + tsys.siso_tf1c
        sys = tsys.siso_tf1c + tsys.siso_ss1c
        sys = tsys.siso_ss1d + tsys.siso_tf1d
        sys = tsys.siso_tf1d + tsys.siso_ss1d
        with pytest.raises(ValueError):
            TransferFunction.__add__(tsys.siso_tf1c, tsys.siso_ss1d)