# mModeCovariance: The m-Mode Covariance Matrix In tensorBSS: Blind Source Separation Methods for Tensor-Valued Observations

## Description

Estimates the m-mode covariance matrix from an array of array-valued observations.

## Usage

 `1` ```mModeCovariance(x, m, center = TRUE) ```

## Arguments

 `x` Array of order higher than two with the last dimension corresponding to the sampling units. `m` The mode with respect to which the covariance matrix is to be computed. `center` Logical, indicating whether the observations should be centered prior to computing the covariance matrix. Default is `TRUE`.

## Details

The m-mode covariance matrix provides a higher order analogy for the ordinary covariance matrix of a random vector and is computed for a random tensor X of size p_1 x p_2 x ... x p_r as Cov_m(X) = E(X(m) X(m)^T)/(p_1 ... p_(m-1) p_(m+1) ... p_r), where X(m) is the centered m-flattening of X. The algorithm computes the estimate of this based on the sample `x`.

## Value

The `m`-mode covariance matrix of `x` having the size p_m x p_m.

Joni Virta

## References

Virta, J., Li, B., Nordhausen, K. and Oja, H., (2017), Independent component analysis for tensor-valued data, Journal of Multivariate Analysis, doi: 10.1016/j.jmva.2017.09.008

`mModeAutoCovariance`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14``` ```## Generate sample data. n <- 100 x <- t(cbind(rnorm(n, mean = 0), rnorm(n, mean = 1), rnorm(n, mean = 2), rnorm(n, mean = 3), rnorm(n, mean = 4), rnorm(n, mean = 5))) dim(x) <- c(3, 2, n) # The m-mode covariance matrices of the first and second modes mModeCovariance(x, 1) mModeCovariance(x, 2) ```