資源簡介
MUSIC算法 [1] 是一種基于矩陣特征空間分解的方法。從幾何角度講,信號處理的觀測空間可以分解為信號子空間和噪聲子空間,顯然這兩個空間是正交的。信號子空間由陣列接收到的數據協方差矩陣中與信號對應的特征向量組成,噪聲子空間則由協方差矩陣中所有最小特征值(噪聲方差)對應的特征向量組成。這是我當時學music算法時自己總結并注釋過,很好懂
代碼片段和文件信息
clear?all;
clc;
p=3;??%入射信號數目
M=8;??%陣元個數
L=1;??%將陣列劃分為相互重疊的L個子陣??
m=M-L+1;??%每個子陣中的陣元個數
fc=1e9;??%入射信號中頻為1G
DOA=[202122]/180*pi;?%信號入射DOA
fs=3*fc;??%采樣頻率
N=512;??%采樣個數
snr=10;??%信噪比
T=1/fs;??%采樣時間間隔
c=3e8;??%波速
d=c/fc*0.5;??%陣元間距
t=0:T:(N-1)*T;??%采樣時間區間
s1=sqrt(2)*cos(2*pi*fc*t);
s3=2*s1;%信號數據
s2=sqrt(2)*cos(2*pi*(fc+2e8)*t);
s4=sqrt(2)*cos(2*pi*(fc+3e7)*t);
%s3=sqrt(2)*cos(2*pi*(fc+5e8)*t);
%s4=5*s1;
s5=sqrt(2)*cos(2*pi*(fc+9e8)*t);;
s6=sqrt(2)*cos(2*pi*(fc+1e7)*t);
ss=[s1;s2;s3;s4;s5;s6];
s=ss(1:p:);
%%%%%%%%計算陣列流形矩陣A
A=zeros(Mp);
for?k=1:p
????for?kk=1:M
????????A(kkk)=exp(-j*2*pi*fc*(kk-1)*d*sin(DOA(k))/c);
????end
end
y=A*s;
y=awgn(ysnr);%陣列接收數據
R=y*y‘/N;
[vdd]=eig(R);?%對協方差矩陣進行特征值分解
%%%%%計算噪聲子空間
if(dd(11)>dd(22))
????Un=v(:p+1:M);
else
????Un=v(:1:(M-p));
end
do=-90:90;
pu1=zeros(1length(do));
kg=1;
for?k=-90:90
????a=zeros(M1);
????for?kk=1:M
????????a(kk1)=exp(-j*2*pi*fc*(kk-1)*d*sin(k/180*pi)/c);
????end
????pu1(1kg)=abs(1/(a‘*Un*Un‘*a));
????kg=kg+1;
end
hold?on;
%測量譜峰值
?DOA_guji1=[];
double(pu1);
double(DOA_guji1);
l=length(pu1);
for?i=2:l-1
????if?(pu1(i)>pu1(i+1)&&pu1(i)>pu1(i-1)&&pu1(i)>1)
????????DOA_guji1=[DOA_guji1i-90-1];
????end
end
DOA_guji1
rf=zeros(mm);
rb=ze
- 上一篇:相關向量機RVM_MATLAB
- 下一篇:matlab演化博弈代碼
評論
共有 條評論