Practical Implementation of the MUSIC Algorithm
The focus is on how the algorithm works computationally, not just theory, and it explains the denominator (aH En EnH a) mathematically and intuitively.
1. Introduction
The MUSIC (Multiple Signal Classification) algorithm is a high-resolution method used in signal processing and array processing to estimate the Direction of Arrival (DOA) of signals received by a sensor array.
Unlike classical beamforming methods, MUSIC uses eigenvector decomposition of the covariance matrix to separate the signal subspace and noise subspace, allowing it to achieve much higher angular resolution.
In practical implementations, MUSIC works by:
- Simulating or collecting array signals
- Computing the covariance matrix
- Performing eigenvalue decomposition
- Separating signal and noise subspaces
- Scanning possible angles using a steering vector
- Constructing a pseudo-spectrum where peaks indicate signal directions
2. Signal Model
Two complex exponential signals are generated as examples:
s1 = exp(1j*2*pi*0.05*t);
s2 = exp(1j*2*pi*0.1*t);
These represent two narrowband sources.
The signals received by the antenna array follow the standard array model:
X = A*S + N
Where:
- X → received signal matrix
- A → steering matrix
- S → source signals
- N → noise
Each column of A corresponds to a steering vector for one source direction.
3. Steering Vector
For a Uniform Linear Array (ULA), the steering vector is:
steering = exp(-1j*2*pi*d*(0:M-1)'*sin(theta));
Mathematically:
a(θ) = [
1
e^(-j2πd sin(θ))
e^(-j2π 2d sin(θ))
⋮
e^(-j2π (M-1) d sin(θ))
]
This vector represents the phase delays across sensors for a signal arriving from angle θ. Each element corresponds to the response of a specific antenna element.
4. Covariance Matrix
R = (X*X')/N;
Mathematically:
R = E[ X X^H ]
The covariance matrix contains information about:
- signal correlations
- noise characteristics
- spatial structure of the received signals
5. Eigenvalue Decomposition
R = E Λ E^H
Where:
- E → eigenvectors
- Λ → eigenvalues
Large eigenvalues correspond to signal components, while smaller ones correspond to noise.
6. Signal and Noise Subspaces
Es = Evec_sorted(:,1:K);
En = Evec_sorted(:,K+1:end);
Key property:
E_n^H a(θ_i) = 0
for true signal directions. This means the steering vector is orthogonal to the noise subspace.
7. MUSIC Spectrum Computation
The pseudo-spectrum used in MUSIC is:
P(θ) = 1 / (a^H(θ) E_n E_n^H a(θ))
Implementation:
Pmusic(i) = 1/(steering'*(En*En')*steering);
8. Meaning of the Denominator
The denominator aH En EnH a measures the energy of the steering vector projected onto the noise subspace. Step by step:
- Projection matrix: En EnH projects any vector onto the noise subspace.
- Apply to steering vector: EnH a(θ) measures how much the steering vector lies in noise. If θ corresponds to a true signal, EnH a(θ) ≈ 0.
- Energy in noise subspace: aH En EnH a = ||P_n a(θ)||² = ||E_n^H a(θ)||².
9. Why Peaks Appear
If the tested angle equals a true signal direction:
E_n^H a(θ) ≈ 0
a^H E_n E_n^H a ≈ 0
P(θ) = 1 / 0 → large peak
These peaks indicate the Direction of Arrival (DOA).
10. Practical Interpretation
The denominator measures how much the steering vector looks like noise:
- If it looks like noise → denominator large → spectrum small
- If it looks like signal → denominator small → spectrum peak
MUSIC finds angles where the steering vector is orthogonal to the noise subspace.
11. Angle Scanning
Scan angles (e.g., -90° to 90°). For each angle:
- Generate steering vector
- Project onto noise subspace
- Compute pseudo-spectrum
The result is a spatial spectrum where peaks correspond to signal directions.
12. Final Result
The final plot shows:
- x-axis → angle
- y-axis → MUSIC spectrum
Sharp peaks appear at the true source angles.
13. Key Practical Insight
The MUSIC algorithm works because:
- Signals occupy a low-dimensional subspace
- Noise occupies the remaining orthogonal subspace
- Steering vectors of real signals lie orthogonal to the noise space
The denominator aH En EnH a acts as a test measuring whether a steering vector belongs to the signal space or noise space.
Summary
The denominator aH En EnH a measures the projection energy of the steering vector onto the noise subspace, and MUSIC finds angles where this energy is nearly zero, indicating the presence of a signal.
Why Do We Need the Covariance Matrix and Eigen Vectors?
Received signal model:
For an array of M sensors and K narrowband sources:
X = A*S + N
Where:
- X — M×N received data matrix (N snapshots)
- A = [a(θ₁), …, a(θK)] — M×K steering matrix
- S — K×N source signal matrix
- N — noise, assumed white Gaussian
Covariance Matrix
We compute the sample covariance:
R = (1/N) * X * X^H
Why compute R?
- R contains all correlations between sensors.
- It separates the signal subspace (strong eigenvalues) from the noise subspace (small eigenvalues).
- MUSIC requires eigen decomposition of R to identify the noise subspace.
- Without R, we cannot identify the direction-independent noise subspace, which is crucial.
2. Eigen-decomposition
Decompose R:
R = E * Λ * E^H
Where:
- E — eigenvectors
- Λ — eigenvalues
Sort eigenvalues in descending order:
- First K eigenvectors → signal subspace Es
- Remaining M−K eigenvectors → noise subspace En
3. Why the Steering Vector is Orthogonal to Noise Eigenvectors
Key property: For a true signal from angle θi, the steering vector lies exactly in the signal subspace:
a(θ_i) ∈ span(E_s)
Since signal and noise subspaces are orthogonal:
E_s^H * E_n = 0
Thus:
E_n^H * a(θ_i) = 0
Mathematically:
- E_n * E_n^H — projection onto noise subspace
- a^H * E_n * E_n^H * a — energy of steering vector projected onto noise
If θ = θi (true signal angle):
E_n^H * a(θ_i) = 0
So the denominator of the MUSIC pseudo-spectrum goes to zero, producing a peak.