'Simulate a time series of length ts_length, first drawing
.. math::
x_0 \sim N(\mu_0, \Sigma_0)
Parameters
ts_length : scalar(int), optional(default=100)
The length of the simulation
Returns
x : array_like(float)
An n x ts_length array, where the t-th column is :math:`x_t`
y : array_like(float)
A k x ts_length array, where the t-th column is :math:`y_t`'

def simulate(self, ts_length=100):

    x0 = multivariate_normal(self.mu_0.flatten(), self.Sigma_0)
    w = np.random.randn(self.m, (ts_length - 1))
    v = self.C.dot(w)
    x = simulate_linear_model(self.A, x0, v, ts_length)
    if (self.H is not None):
        v = np.random.randn(self.l, ts_length)
        y = (self.G.dot(x) + self.H.dot(v))
    else:
        y = self.G.dot(x)
    return (x, y)
