虚拟阵列天线的音乐算法

时间:2016-04-06 04:55:31

标签: matlab telecommunication

此代码适用于使用 MUSIC 算法估算 DOA (到达方向)。在该代码中,阵列中有4个真实天线,2个天线之间的距离是λ/ 2。 DOA估计有两个信号。我试图在真实天线之间插入虚拟天线,以便DOA估计应该被精确和准确。我正在使用线性虚拟天线阵列插值。此外,我假设两个真实天线的中心点作为虚拟天线阵列的坐标。请帮助我如何在真实阵列中插入虚拟天线。

clc

clear all

format long %The data show that as long shaping scientific

doa=[26 30]/180*pi; %Direction of arrival

N=200;%Snapshots

w=[pi/4 pi/3]';%Frequency

M=4;%Number of array elements

P=length(w); %The number of signal

lambda=150;%Wavelength

d=lambda/2;%Element spacing

snr=20;%SNA

D=zeros(P,M); %To creat a matrix with P row and M column

for k=1:P

    D(k,:)=exp(-j*2*pi*d*sin(doa(k))/lambda*[0:M-1]); %Assignment   matrix

end

D=D';

xx=2*exp(j*(w*[1:N])); %Simulate signal

x=D*xx;

x=x+awgn(x,snr);%Insert Gaussian white noise

R=x*x'; %Data covarivance matrix

[N,V]=eig(R); %Find the eigenvalues and eigenvectors of R

NN=N(:,1:M-P); %Estimate noise subspace

theta=-90:0.5:90; %Peak search

for ii=1:length(theta)

SS=zeros(1,length(M));

for jj=0:M-1

    SS(1+jj)=exp(-j*2*jj*pi*d*sin(theta(ii)/180*pi)/lambda);

end

PP=SS*NN*NN'*SS';

Pmusic(ii)=abs(1/ PP);

end

Pmusic=10*log10(Pmusic/max(Pmusic)); %Spatial spectrum function

plot(theta,Pmusic,'-k')

xlabel('angle \theta/degree')

ylabel('spectrum function P(\theta) /dB')

title('DOA estimation based on MUSIC algorithm ')

grid on

0 个答案:

没有答案