MUSIC Algorithm Introduction
MUSIC The algorithm is called multi signal classification algorithm(Multiple Signal
classification),MUSIC The basic idea of the algorithm is to decompose the covariance matrix of the output data of any array, Thus, the signal subspace corresponding to the signal component and the noise subspace orthogonal to the signal component are obtained, Then, the orthogonality of these two subspaces is used to estimate the parameters of the signal( Incident direction, Polarization information and signal strength).MUSIC The algorithm has universal applicability, As long as the array form of the antenna array is known, Whether it's a line array or a circle array, Whether or not the elements are equally spaced, High resolution results can be obtained.
principle
Narrow band far field signalDOA(Direction-of-Arrival) The mathematical model is

X=A(θ)s(t)+N(t)
Based on this model, The covariance matrix of array signal can be obtained as
R=E[XXH]=AE[SSH]AH+δ2I=ARSAH+δ2I


amongRs It's a signal.s(t) Covariance matrix of, Because signal and noise are independent of each other, Data covariance can be decomposed into signal subspace and noise subspace. And then we were rightR Feature decomposition, You can get the following

R=USΣSUHS+UNΣNUHN
amongUS Is a subspace made up of eigenvectors corresponding to large eigenvalues, Signal subspace.UN
It is a subspace formed by the eigenvectors corresponding to small eigenvalues. Noise subspace. Because signal subspace and noise subspace are orthogonal to each other, Then the guidance vector of the signal subspaceA(θ) Orthogonal to noise subspace.
aH(θ)UN=0
But in practice, The array of received signals is limited, here
R^=1L∑i=1nXXH
Then onR^ Feature decomposition, Calculating the eigenvector of noise subspaceUN^, Then construct the following spectrum, And then we do the minimum optimization search, Namely
θMUSIC=argθminaH(θ)UNUNUHNa(θ)^^^
The spectral estimation formula is
PMUSIC=1aH(θ)UNUHNa(θ)^^

Related experiments
Next onmatlab Carry out inMUSIC Experimental simulation, The corresponding code is as follows
clear all close all derad = pi/180; radeg = 180/pi; twpi = 2*pi; kelm = 8;
% Array element number dd = 0.5; % Element spacing d=0:dd:(kelm-1)*dd; iwave = 3; theta = [10 30 60];
% The angle to be estimated is10 30 60 snr = 10; % Signal-to-noise ratio n = 500; % Snapshot number A=exp(-j*twpi*d.'*sin
(theta*derad)); S=randn(iwave,n); X=A*S; X1=awgn(X,snr,'measured'); Rxx=X1*X1'
/n; InvS=inv(Rxx);[EV,D]=eig(Rxx); EVA=diag(D)'; [EVA,I]=sort(EVA);
EVA=fliplr(EVA); EV=fliplr(EV(:,I)); for iang = 1:361 angle(iang)=(iang-181)/2;
phim=derad*angle(iang); a=exp(-j*twpi*d*sin(phim)).'; L=iwave; En=EV(:,L+1
:kelm); SP(iang)=(a'*a)/(a'*En*En'*a); end SP=abs(SP); SPmax=max(SP); SP=10*
log10(SP/SPmax); h=plot(angle,SP); set(h,'Linewidth',2) xlabel('angle (degree)'
) ylabel('magnitude (dB)') axis([-90 90 -60 0]) set(gca, 'XTick',[-90:30:90])
grid on
The experimental results are shown in the figure below

Can see, In the spectrum shown on the right, The spectrum has three peaks, That's where we're going to estimate, The corresponding abscissa is10,30,60. Same as set in the above code.