def tb01pd_example(): A = array([[-1, 0],[0,-1]]) B = ones((2,1)) C = array([[0,1]]) out = slycot.tb01pd(2, 1, 1, A, B, C) print('--- Example for tb01pd ...') print('Minimal realization for A, B, C') print('reduced order', out[-2]) print(out)
def minreal(self, tol=0.0): """Calculate a minimal realization, removes unobservable and uncontrollable states""" try: from slycot import tb01pd B = empty((self.states, max(self.inputs, self.outputs))) B[:,:self.inputs] = self.B C = empty((max(self.outputs, self.inputs), self.states)) C[:self.outputs,:] = self.C A, B, C, nr = tb01pd(self.states, self.inputs, self.outputs, self.A, B, C, tol=tol) return StateSpace(A[:nr,:nr], B[:nr,:self.inputs], C[:self.outputs,:nr], self.D) except ImportError: raise TypeError("minreal requires slycot tb01pd")