首页下载资源行业DOA估计经典算法

ZIPDOA估计经典算法

jingbikui78762.48KB需要积分:1

资源文件列表:

doa_music_esprit.zip 大约有2个文件
  1. ESPRIT.m 2.09KB
  2. MUSIC.m 1.82KB

资源介绍:

常规的DOA估计算法,包括MUSIC、ESPRIT,使用线性调频信号进行仿真,不使用噪声作为信号。可用于本科毕业设计
%%%%%%%%%%%%%%%基于线性调频信号的ESPRIT算法 clear; close all; j=sqrt(-1); c=3e8; tao=10e-6;%采样间隔 fs=100e6;%采样频率 M=8; f1_l=29.9e6; f1_h=30.1e6;%信号的低频和高频 f2_l=30.1e6; f2_h=29.9e6;%此种情况下,中频相同且不相关,且为窄带信号 f1_c=(f1_l+f1_h)/2;%中频,且相同 B1=f1_h-f1_l;%带宽 kc1=B1/tao;%调制斜率 kc2=-B1/tao; N_fs=fix(tao*fs);% 采样点数 t0=(0:N_fs-1)/fs; snr=10; theta=[-10 20];%入射角度 N_source=length(theta); lambda=c/f1_c;%波长及阵元间距 d=lambda/2; dd=(0:M-1)*d; mecnt=100; F = fs/N_fs; f_xlabe = ((0:N_fs-1)-N_fs/2)*F; %%%%%%%%%%%流行矩阵 delay=zeros(M,N_source); for i=1:N_source delay(:,i)=dd.'*sin(theta(i)*pi/180)/c; end % A=zeros(M,N_source); % for i2=1:N_source % A(:,i2)=exp(j*2*pi*dd.'*sin(theta(i)*pi/180)/c); % delay(:,i2)=dd.'*sin(theta(i2)*pi/180)/c % end %%%%%%%%%%%产生线性调频信号 X1=zeros(M,N_fs); X2=zeros(M,N_fs); for h1=1:M; t1=t0-delay(h1,1); X1(h1,:)=exp(j*2*pi*(f1_l*t1+1/2*kc1*t1.^2)); end for h2=1:M; t2=t0-delay(h2,2); X2(h2,:)=exp(j*2*pi*(f2_l*t2+1/2*kc2*t2.^2)); end % plot(f_xlabe,fftshift(abs(fft(X1(1,:),N_fs)))); X_out=X1+X2; % X=awgn(X,snr,'measured'); %%%%%%%%%%%ESPRIT算法 for loop=1:mecnt X=awgn(X_out,snr,'measured'); Y1=X(1:M-1,:); Y2=X(2:M,:);%子阵1和2 Y=[Y1;Y2]; R=(Y*Y')/N_fs;%输出阵列 [edv d1]=eig(R); d11=diag(d1); [d_sort pre]=sort(abs(d11 ),'descend');%按照降序排列 edv_sort=edv(:,pre);%取出信号子空间 edv1=edv_sort(:,1:N_source); Ex=edv1(1:M-1,:); Ey=edv1(M:2*M-2,:);%两个子阵的信号子空间 F = pinv(Ex)*Ey; %%%%%%%%%子阵1的逆与子阵2的乘积为不变关系 [edv2,d2]=eig(F); % 对F进行特征分解得到特征值 doa(:,loop)= -asin( lambda*angle(diag(d2))/(2*pi*d))*180/pi; %角度估计 % doa_sort(:,loop) = sort(doa(:,loop),'ascend'); end doa_sort = sort(doa,'ascend'); %------蒙特卡洛实验下对不同角度估计值进行绘图 % figure; plot(doa_sort(1,:),'-b'); hold on; plot(doa_sort(2,:),'-r'); legend('-10°','20°'); xlabel('实验次数'); ylabel('doa估计'); title('ESPRIT蒙特卡罗实验');
100+评论
captcha