📄 acpmethod.m
字号:
%ACP method
clc;clear all;close all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N= 8; % number of sensors
M= 8; % number of pulse
lamda=0.03; % wavelength
V_p=90; % platform velocity
d=0.015; % spacing of sensors
PRF=12000; % pulse repetition frequency
T=1/PRF; % pulse repetition interval
H=500; % platform height
R=1000; % range
theta=asin(H/R); % depression angle
Bc=0; % clutter bandwidth
mm=0:1:N-1;mm=mm';
nn=0:1:M-1;nn=nn';
r1=N+M-1;
r2=N*M-r1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% %Clutter Covariance Matrix% %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for m=1:1:M
for p=1:1:M
for i=1:1:N
for k=1:1:N
l=(m-1)*N+i;
n=(p-1)*N+k;
phi=linspace(0,2*pi,61);
D=0.5*(1+cos(2*(phi-pi/2)));
D=D.^2;
%D=1;% 有无加权影响很大!
G=1;
t_phase=exp(j*2*pi/lamda*2*V_p*(m-p)*T*cos(phi));
s_phase=exp(j*2*pi/lamda*(i-k) *d*cos(phi));
integral=D.*t_phase.*s_phase.*G;
Q(l,n)=sum(integral)/60;
% Q(l,n)=Q(l,n)*exp(-Bc*Bc*(m-p)^2/8);
end
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CNR=trace(Q)/trace(0.00001*eye(N*M,N*M))
Q=Q+0.001*eye(N*M,N*M);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fd_d=0;
AA=exp(j*2*pi*nn);
BB=exp(j*2*pi*mm*fd_d);
S_d=kron(AA,BB); %search channel
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
D=16;
TT=zeros(M*N,D);
%% IF %%
%%%%%杂波通道%%%%%%%%%%
r=1;
for fd1=-0.5:(1/(D-1)):0.5
AAr=exp(j*2*pi*nn*fd1);
BBr=exp(j*2*pi*mm*fd1);
Sr=kron(BBr,AAr);
TT1(:,r)=Sr;
r=r+1;
end
clear Sr;
%I=eye(M*N);
%TT1=fft2(I);
%%%%%非杂波通道%%%%%%%%%%
rr=1;
for fdt=-0.5:(1/(M-1)):0.5
for fds=-0.5:(1/(N-1)):0.5
if (fdt~=fds)
AAs=exp(j*2*pi*nn*fds);
BBt=exp(j*2*pi*mm*fdt);
Sr=kron(BBt,AAs);
TT2(:,rr)=Sr;
rr=rr+1;
end
end
end
ii=1;
for fd=-0.5:0.01:0.5
AAi=exp(j*2*pi*nn);
BBi=exp(j*2*pi*mm*fd);
S=kron(BBi,AAi);
Wopt=inv(Q)*S;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%TT=[S,TT1(:,1:D-1)];
TT=TT2(:,10:10+D-1);
ST=TT'*S;
QT=TT'*Q*TT;
WT=inv(QT)*ST;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SINR1(ii)=abs(Wopt'*S);
SINR2(ii)=abs(WT'*ST);
ii=ii+1;
end
SINR1=10*log10(SINR1/max(SINR1));
SINR2=10*log10(SINR2/max(SINR2));
figure(1);
mesh(abs(Q));title('Modulus');
figure(2);
fd=-0.5:0.01:0.5;
plot(fd,SINR1,'-b');
hold on;
plot(fd,SINR2,'r');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -