I am reading a paper [1] 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
[1] 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.
[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}])^*]$.