This is a file format for saving/loading the correlation matrix of a multi-channel signal in the frequency domain. The correlation matrix is utilized in LocalizeMUSIC to whiten (suppress) pre-measured noise from sound source localization. Currently, CMSave and CMLoad use this file format for input/output correlation matrices.
Let $M$ and $N$ denote the number of microphones and frequency bins, respectively. A correlation matrix is an $M$-th order square complex matrix, and the matrix is calculated for each frequency bin. Let $\boldsymbol {R}(n)$ represent the correlation matrix of $n$-th frequency bin ($1 \leq n \leq N$), described as follows:
$\displaystyle \boldsymbol {R}(n) = \left[ \begin{array}{ccc} r_{11}(n) & \cdots & r_{1M}(n)\\ \vbox{\baselineskip 4\p@ \lineskiplimit \z@ \kern 6\p@ \hbox{$\m@th .$}\hbox{$\m@th .$}\hbox{$\m@th .$}}& \mathinner {\mkern 1mu\raise 7\p@ \vbox{\kern 7\p@ \hbox{$\m@th .$}}\mkern 2mu \raise 4\p@ \hbox{$\m@th .$}\mkern 2mu\raise \p@ \hbox{$\m@th .$}\mkern 1mu}& \vbox{\baselineskip 4\p@ \lineskiplimit \z@ \kern 6\p@ \hbox{$\m@th .$}\hbox{$\m@th .$}\hbox{$\m@th .$}}\\ r_{M1}(n) & \cdots & r_{MM}(n)\\ \end{array} \right], $ | (1) |
where $r_{11}(n), \cdots , r_{MM}(n)$ are complex numbers.
Then, the correlation matrix of all $N$ frequency bins are saved in the following format by separating the real part and imaginary part of it.
Correlation Matrix File (Real part)
$\displaystyle \begin{array}{cccccccc} \textrm{Re}[r_{11}(1)] & \textrm{Re}[r_{12}(1)] & \cdots & \textrm{Re}[r_{1M}(1)] & \textrm{Re}[r_{21}(1)] & \textrm{Re}[r_{22}(1)]& \cdots & \textrm{Re}[r_{MM}(1)]\\ \textrm{Re}[r_{11}(2)] & \textrm{Re}[r_{12}(2)] & \cdots & \textrm{Re}[r_{1M}(2)] & \textrm{Re}[r_{21}(2)] & \textrm{Re}[r_{22}(2)]& \cdots & \textrm{Re}[r_{MM}(2)]\\ \textrm{Re}[r_{11}(N)] & \textrm{Re}[r_{12}(N)] & \cdots & \textrm{Re}[r_{1M}(N)] & \textrm{Re}[r_{21}(N)] & \textrm{Re}[r_{22}(N)]& \cdots & \textrm{Re}[r_{MM}(N)]\\ \end{array} \nonumber $ |
Correlation Matrix File (Imaginary part)
$\displaystyle \begin{array}{cccccccc} \textrm{Im}[r_{11}(1)] & \textrm{Im}[r_{12}(1)] & \cdots & \textrm{Im}[r_{1M}(1)] & \textrm{Im}[r_{21}(1)] & \textrm{Im}[r_{22}(1)] & \cdots & \textrm{Im}[r_{MM}(1)]\\ \textrm{Im}[r_{11}(2)] & \textrm{Im}[r_{12}(2)] & \cdots & \textrm{Im}[r_{1M}(2)] & \textrm{Im}[r_{21}(2)] & \textrm{Im}[r_{22}(2)] & \cdots & \textrm{Im}[r_{MM}(2)]\\ \textrm{Im}[r_{11}(N)] & \textrm{Im}[r_{12}(N)] & \cdots & \textrm{Im}[r_{1M}(N)] & \textrm{Im}[r_{21}(N)] & \textrm{Im}[r_{22}(N)] & \cdots & \textrm{Im}[r_{MM}(N)]\\ \end{array} \nonumber $ |
The file is saved as a space-separated values (ssv) file. The file has $N$ rows and $M \times M$ columns. CMLoad recognizes the file as $\boldsymbol {R}(n)$.