doa估计算法 matlab,一种未知信源数的DOA估计-music和capon算法仿真实验!
具體參考《一種未知信源數(shù)的高分辨DOA估計(jì)算法 》-【張濤麟? ???劉? ?穎? ???廖桂生 】,我是完全按照這篇文獻(xiàn)做的,但是最后仿真出來(lái)的效果圖根本就沒有文獻(xiàn)那么理想,請(qǐng)大神們指教一下!下面附上程序!
clc;
clear all;
%-----------參數(shù)設(shè)置--------------
M=13;? ?? ?? ?? ?? ? %陣元數(shù)
N=1;? ?? ?? ?? ?%信源數(shù)
fs=8*10^8;? ?? ?? ?? ?%采樣頻率
c=3*10^8;? ?? ?? ?? ?%光速
lamda=2;? ?? ?? ?? ?%波長(zhǎng)
d=lamda/2;? ?? ?? ?? ?%陣元間距
snr=10;? ?? ?? ?%信噪比
thetai=pi/3;? ?? ???%信號(hào)入射角度
% ------------主程序--------------
A=[exp(-2*pi*j*d*[0:M-1]*sin(thetai)/lamda)].';? ?? ???%導(dǎo)向矢量
sam=50:25:500;? ?? ? %采樣點(diǎn)數(shù),即快拍數(shù)
for i=1:length(sam)
for num=1:10
n=1:sam(i);
W0=2*pi*c/lamda;? ?? ?? ?? ?? ???%信號(hào)角頻率
S=[cos(W0*n/fs)];? ?? ?? ?? ?? ???%入射信號(hào)
x=A*S;
x1=awgn(x,snr,'measured');? ?%陣列接收到的數(shù)據(jù)
x2=(x1)';? ?? ?? ?? ?? ?? ???%陣列接收到的數(shù)據(jù)的共軛轉(zhuǎn)置
Rx=x1*x2/sam(i);? ?? ?? ?? ? %協(xié)方差矩陣
Rn=inv(Rx);? ?? ?? ?? ?? ?? ?%Rx的逆矩陣
%? ?? ?? ?for k=1:M
%? ?? ?? ?? ?TrR=sum(Rx(k,k));
%? ?? ?? ?end
%? ?? ?? ?BB=TrR/20;
%? ?? ?? ?I=eye(M,M);
%? ?? ?? ?Rd=inv(Rx/BB+I);
[V D]=eig(Rx);? ?? ?? ?? ?? ?%特征值分解
[lambda,index]=sort(diag(D));%特征值排序
UU=V(:,index(1:M-N));? ?? ???%噪聲子空間
theta=-pi/2:pi/3600:pi/2;? ? %角度變化的范圍
for n=1:length(theta)
A1a=[exp(-2*pi*j/lamda*d*[0:M-1]*sin(theta(n)))].';
Pmusic(n)=1/((A1a)'*UU*(UU)'*A1a);
Pcapon(n)=1/((A1a)'*Rn^2*A1a);
end
Pm=abs(Pmusic);
[Y,I]=max(Pm);
Angle(num)=(pi/3600*(I-1)-pi/2)*180/pi;
Pc=abs(Pcapon);
[C,O]=max(Pc);
Angle1(num)=(pi/3600*(O-1)-pi/2)*180/pi;
end
%? ???J(i)=mean(Angle);? ?? ?? ? %角度均值
%? ???p(i)=J(i)-thetai/pi*180;? ?%偏差
p(i)=sum((Angle(:,1)- thetai/pi*180))/num;
RMSe(i)=sqrt(sum((Angle(:,1)- thetai/pi*180).^2)/num);??%標(biāo)準(zhǔn)差
%? ???J1(i)=mean(Angle1);? ?? ???%角度均值
%? ???p1(i)=J1(i)-thetai/pi*180; %偏差
p1(i)=sum((Angle1(:,1)- thetai/pi*180))/num;
RMSe1(i)=sqrt(sum((Angle1(:,1)- thetai/pi*180).^2)/num);%標(biāo)準(zhǔn)差
end
subplot(2,1,1);
plot(sam,p,'-r',sam,p1,'-.k');
grid;
%set(gca,'YLim', [-20 5]);
xlabel('快拍數(shù)');
ylabel('DOA估計(jì)偏差(°)');
legend('p','p1');
subplot(2,1,2);
plot(sam,RMSe,'-r',sam,RMSe1,'-.k');
grid;
%set(gca,'YLim', [-20 5]);
xlabel('快拍數(shù)');
ylabel('DOA估計(jì)標(biāo)準(zhǔn)差(°)');
legend('RMSe','RMSe1');
總結(jié)
以上是生活随笔為你收集整理的doa估计算法 matlab,一种未知信源数的DOA估计-music和capon算法仿真实验!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OTB运行代码文件介绍
- 下一篇: matlab人脸追踪,求大神帮助我这个菜