def calc_cov(samples):
    """
    Calculates covariance matrix as described in paper.

    Args:
        samples (list of np.matrix) - a list of sample-matrices

    Returns:
        np.matrix - the covariance matrix

    >>> s1 = np.matrix([[1, 0], [0, 1]])
    >>> s2 = np.matrix([[2, 0], [0, 2]])
    >>> calc_cov([s1, s2])
    matrix([[2.5, 0. ],
            [0. , 2.5]])
    """
    no_of_samples = len(samples)
    sigma_c = 1 / no_of_samples * samples[0].T.dot(samples[0])
    for i in range(1, no_of_samples):
        sigma_c += 1 / no_of_samples * samples[i].T.dot(samples[i])
    return sigma_c