- 17.6.15
- %ROOT_MUSIC ALOGRITHM
- %DOA ESTIMATION BY ROOT_MUSIC
- clc;
- clear all;
- close all;
- K=2; %信源數
- M=8; %陣元數
- L=200; %信號長度
- w=[pi/4 pi/6].'; %信號頻率
- lamda=((2*pi*3e8)/w(1)+(2*pi*3e8)/w(2))/2;%信號波長
- d_lamda=0.5; %陣元間距
- snr=20; %信噪比
- theta1=[45,60]; %信號入射角
- for k=1:K
- A(:,k)=exp(-1j*[0:M-1]'*d_lamda*2*pi*sin(theta1(k)*pi/180)); %陣列流型
- end
- for kk=1:L
- s(:,kk)=sqrt(10.^((snr/2)/10))*exp(1j*w*(kk-1));%仿真信號
- end
- x=A*s+(1/sqrt(2))*(randn(M,L)+1j*randn(M,L));%加入高斯白噪聲
- R=(x*x')/L; %協方差矩陣
- %%%%%%第一種方法%%%%%%%%%%
- [V,D]=eig(R); %對協方差矩陣進行特徵分解
- Un=V(:,1:M-K); %取噪聲子空間
- Gn=Un*Un';
- a = zeros(2*M-1,1)'; %找出多項式的係數,並按階數從高至低排列
- for i=-(M-1):(M-1)
- a(i+M) = sum( diag(Gn,i) );
- end
- a1=roots(a); %使用ROOTS函數求出多項式的根
- a2=a1(abs(a1)<1); %找出在單位圓裏且最接近單位圓的N個根
- [lamda,I]=sort(abs(abs(a2)-1)); %挑選出最接近單位圓的N個根
- f=a2(I(1:K)); %計算信號到達方向角
- source_doa=[asin(angle(f(1))/pi)*180/pi asin(angle(f(2))/pi)*180/pi];
- source_doa=sort(source_doa);
- disp('source_doa');
- disp(source_doa);
- %%%%%%%第二種方法%%%%%%%%%
- % [V,D]=eig(R);
- % Un=V(:,1:M-K); %(4.5.7)
- % Un1=Un(1:M,:);
- % Un2=Un(K+1:M,:);
- % T=[1 0 0 0 0 0]'; %(陣元數-信源數)*1
- % c=Un1*inv(Un2)*T; % (K*(M-K))*((M-K)*(M-K))*((M-K)*1)=K*1
- % c=[1,c(2,1),c(1,1)]; %(4.5.8)
- % f=roots(c);
- % source_doa=[asin(angle(f(1))/pi)*180/pi asin(angle(f(2))/pi)*180/pi];
- % source_doa=sort(source_doa);
- % disp('source_doa');
- % disp(source_doa);
rootMUSIC算法
來源:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.