'Create a frozen matrix normal distribution.
Parameters
%(_matnorm_doc_default_callparams)s
seed : None or int or np.random.RandomState instance, optional
If int or RandomState, use it for drawing the random variates.
If None (or np.random), the global np.random state is used.
Default is None.
Examples
>>> from scipy.stats import matrix_normal
>>> distn = matrix_normal(mean=np.zeros((3,3)))
>>> X = distn.rvs(); X
array([[-0.02976962,  0.93339138, -0.09663178],
[ 0.67405524,  0.28250467, -0.93308929],
[-0.31144782,  0.74535536,  1.30412916]])
>>> distn.pdf(X)
2.5160642368346784e-05
>>> distn.logpdf(X)
-10.590229595124615'

def __init__(self, mean=None, rowcov=1, colcov=1, seed=None):

    self._dist = matrix_normal_gen(seed)
    (self.dims, self.mean, self.rowcov, self.colcov) = self._dist._process_parameters(mean, rowcov, colcov)
    self.rowpsd = _PSD(self.rowcov, allow_singular=False)
    self.colpsd = _PSD(self.colcov, allow_singular=False)
