rootMUSIC算法


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