clear;
clc;
fl=2000;
fh=5000;
Ns=124; %采样点数
J=31; % 频率点数
K=3;
SNR=10;
d=30000;
c=300000000;
azi=[-30,40,60];%方向角
ULA_ratio1=3; %互质阵列1
ULA_ratio2=5; %互质阵列2
M1=ULA_ratio2; %扩展互质阵列
M2=2*ULA_ratio1;
M=M1+M2-1; %阵元数
indexA=sort(unique([(0:1:M1-1)*ULA_ratio1 (0:1:M2-1)*ULA_ratio2]));%虚拟阵列
for i=1:length(indexA)
R_a(i,:)=indexA(i)-indexA(:);
end
R_b=unique(R_a); %去冗余后的虚拟阵列
MM=2*ULA_ratio1*ULA_ratio2+1;
%宽带信号
i_=sqrt(-1);
Vs0=10^(SNR/10);
Vs=sqrt(Vs0/2);
s=Vs*(randn(K,Ns)+i_*randn(K,Ns));
S=zeros(K,Ns);
for i=1:K
S(i,:)=fft(s(i,:));%时域信号变换至频域
end
m=1;
for i=1:J
Z(:,:,i)=S(:,m:m+3);
m=m+4;
end
%噪声信号
Vn0=ones(1,M);
Vn=diag(sqrt(Vn0/2));
n=Vn*(randn(M,Ns)+i_*randn(M,Ns));%噪声
N=zeros(M,Ns);
for i=1:M
N(i,:)=fft(n(i,:));%时域信号变换至频域
end
m=1;
for i=1:J
N1(:,:,i)=N(:,m:m+3);
m=m+4;
end
%信号模型
f=linspace(fl,fh,J);%将频率等分J份
A=zeros(M,K);
mu=zeros(31,1);
azi1=[-28,-22,38,41,58];%方向角的估计值
sj=zeros(length(azi1));
sum=0;k=1;
for i=1:J
A1=exp(i_*2*pi*f(i)/c*[0:MM-1]'*d*sin(azi1*pi/180));
A=exp(-1*sqrt(-1)*2*pi*indexA'*d*f(i)*sin(azi*pi/180)/c); %互质阵下的阵列流型
X=A*Z(:,:,i)+N1(:,:,i);
R(:,:,i)=X*X'/4; %协方差矩阵
z1(:,:,i)=reshape(R(:,:,i),100,1); %向量化
%-ULA_ratio1*ULA_ratio2*d:d:ULA_ratio1*ULA_ratio2*d
r1=-ULA_ratio1*ULA_ratio2:1:ULA_ratio1*ULA_ratio2;
AA=[];
for ii=1:MM
aA=find(R_a==r1(ii));
AA=[AA;aA(1)];
end
z(:,:,i)=z1(AA,:,i); %虚拟阵下的接收信号
Rx(:,:,i)=z(:,:,i)*z(:,:,i)'; %协方差矩阵
temp=eig(Rx(:,:,i));
temp=sort(temp);
for ii=1:MM-K
sum=sum+temp(ii);
end
P(:,:,i)= Rx(:,:,i)-sum/(MM-K)*eye(MM,MM);
[U,W1,V]=svd(P(:,:,i)); %奇异值分解
mu=mu+diag(W1);
sj=sj+inv(A1'*A1)*A1'*P(:,:,i)*A1*inv(A1'*A1);
[Q1(:,:,i),B(:,:,i)]=eig(P(:,:,i)); %特征分解,构造聚焦矩阵
Q0(:,k:k+MM-1)=Q1(:,:,i);
k=k+MM;
end
%中心频率的选择
s0=1/J*sj;
mu=1/J*mu;
for k1=1:J %选择参考频率fc
A0=exp(i_*2*pi*f(k1)/c*[0:MM-1]'*d*sin(azi1*pi/180));
P0=A0*s0*A0';
[Up Dp Vp]=svd(P0);
Dp0=diag(Dp);
SUM=0;
for kk=1:K
SUM=SUM+(Dp0(kk)-mu(kk)).^2;
end
Result(k1)=SUM;
end
[h,j]=min(Result);
Q_=Q0(1+(j-1)*MM*MM:j*MM*MM);
Q=reshape(Q_,MM,MM);
Ry=zeros(MM,MM);
for i=1:J
T(:,:,i)=Q*Q1(:,:,i)'; %聚焦矩阵
Ry=Ry+(T(:,:,i)*z(:,:,i))*(T(:,:,i)*z(:,:,i))'; %聚焦变换后的协方差矩阵
end
Ry=Ry/J;
[V,D]=eig(Ry);
[EVA,I]=sort(diag(D));
V=V(:,I);
noise_subspace=V(:,1:MM-K);
q=1;
for angle=-90:1:90
ang=[];
for m1=1:MM
ang=[ang;exp(-i_*2*pi*f(j)*d*(m1-1)*sin(angle*pi/180)/c)];
end
p(q)=1/(ang'*noise_subspace*noise_substhankspace'*ang);
q=q+1;
enq
pm=10*log10(abs(p/max(p)));
thetaesti=-90:1:90;
plot(thetaesti,pm);
@EstelleYuan 谢谢