# Is a covariance matrix full rank?

I am reading a paper  and saw something confusing to me.

Is a covariance matrix full rank?

Let $\textbf{s}(t)$ be a $d\times1$ complex-valued column vector containing signals from $d$ different sources, i.e.,

$\textbf{s}(t)=\begin{bmatrix}s_1(t) & s_2(t) & \cdots & s_d(t)\end{bmatrix}^T$

And a $d \times d$ covariance matrix $\textbf{S}$ can be expressed as

$\textbf{S}=E\left[\textbf{s}(t)\textbf{s}^*(t)\right]$,

where ${}^*$ is a conjugate transpose operator.

Then the authors claim that $rank(\textbf{S})=d$

However, when I quickly check with a random column vector (via MATLAB), e.g.,

$s= \begin{bmatrix} 0.6324 + 0.5469i \\ 0.0975 + 0.9575i \\ 0.2785 + 0.9649i \\ \end{bmatrix}$

then $\textbf{S}$:

$\textbf{S}= \begin{bmatrix} 0.6990 - 0.0000i & 0.5853 - 0.5521i & 0.7038 - 0.4579i \\ 0.5853 + 0.5521i & 0.9263 - 0.0000i & 0.9511 + 0.1725i \\ 0.7038 + 0.4579i & 0.9511 - 0.1725i & 1.0086 + 0.0000i \\ \end{bmatrix}$

and MATLAB said its $rank(\textbf{S})$ is 1.

Am I missing something or understanding the paper wrong?

Reference

 R. Roy, A. Paulraj, and T. Kailath, “Estimation of Signal Parameters via Rotational Invariance Techniques - ESPRIT,” in Military Communications Conference - Communications-Computers: Teamed for the 90’s, 1986. MILCOM 1986. IEEE, 1986, vol. 3, p. 41.6.1-41.6.5.

• There's an expectation there, so presumably $s(t)$ is supposed to be a random vector., or maybe the expectation is an integral over time or something. Either way you're only considering the special case where $s(t)$ is constant. It is true that the rank won't always be $d$, though. – Qiaochu Yuan Mar 22 '17 at 4:44

## 1 Answer

[Echoing Qiaochu's comment.]

For a fixed vector $\mathbf{s}$, indeed $\mathbf{ss}^*$ always has rank $1$.

But when $\mathbf{s}$ is random and you take an expectation, this will be an average of rank one matrices which need not be rank $1$.

A silly example for when the matrix might not be full rank: if $\mathbf{s}$ has independent components and the first entry is non-random, then the covariance matrix is diagonal and the first diagonal entry is zero, so the matrix is not full rank.

Note also that the formula for covariance that you have written only works if $\mathbf{s}$ has zero mean. In general it is $E[(\mathbf{s}-E[\mathbf{s}])(\mathbf{s}-E[\mathbf{s}])^*]$.

• Wow, thanks. according to your answer, I've written MATLAB script that generates signals multiple times and takes expectations, and saw it is full rank. – Jeon Mar 22 '17 at 4:56