Pay attention that for a Scalar Random Process the Power Spectrum Density is non negative.
Namely, let $ y \left[ n \right] \in \mathbb{R} $ be a WSS Random process with its Auto Correlation function given by:
$$ {R}_{y, y} \left[ m \right] = \mathbb{E} \left[ y \left[ n \right] y \left[ n - m \right] \right] $$
Then the Power Spectrum Density is:
$$ {S}_{y, y} \left( f \right) = \sum_{m = -\infty}^{\infty} {R}_{y, y} \left[ m \right] {e}^{-j 2 \pi f m} \geq 0 $$
Then, by defining $ z \left[ n \right] = \boldsymbol{v}^{T} \boldsymbol{x} \left[ n \right] $ one would get:
$$ \begin{align*}
0 \leq {S}_{z, z} \left( f \right) & = \sum_{m = -\infty}^{\infty} \mathbb{E} \left[ z \left[ n \right] {z}^{T} \left[ n - m \right] \right] {e}^{-j 2 \pi f m} \\
& = \sum_{m = -\infty}^{\infty} \mathbb{E} \left[ \boldsymbol{v}^{T} \boldsymbol{x} \left[ n \right] \boldsymbol{x}^{T} \left[ m - m \right] \boldsymbol{v} \right] {e}^{-j 2 \pi f m} \\
& = \boldsymbol{v}^{T} \left( \sum_{m = -\infty}^{\infty} \mathbb{E} \left[ \boldsymbol{x} \left[ n \right] \boldsymbol{x}^{T} \left[ n - m \right] \right] {e}^{-j 2 \pi f m} \right) \boldsymbol{v} \\
& = \boldsymbol{v}^{T} {S}_{x, x} \left( f \right) \boldsymbol{v} \\
& \Rightarrow {S}_{x, x} \left( f \right) \succeq 0
\end{align*} $$
Some remarks regarding simulating it in MATLAB:
- If one use MATLAB's
xcorr()
to calculate the Auto Correlation one should use ifftshift()
to shift the function to be "Symmetric" to MATLAB in order to have the DFT Real and Non Negative. This is due to the fast MATLAB's fft()
expects the first sample to be of index $ 0 $ (See the lags
output of xcorr()
).