目录
1.算法描述
2.仿真效果预览
3.MATLAB核心程序
4.完整MATLAB
GPS接收机天线易受其它射频信号干扰,传统的做法已不能满足高精度用户的需求。为了提高导航定位精度,在GPS天线抗干扰设计中引入了功率倒置算法。功率倒置算法具备在不明确干扰信号相关背景的情况下能够有效抑制干扰,据此设计了采用功率倒置算法的GPS天线接收模型,并对半物理实物进行了相关仿真,取得了较好测量精度。
功率倒置指的是自适应天线阵具有倒置两个接收信号的功率比 的能力。 功率倒置算法是直接将阵列的输出作为误差信号, 使的均方 误差最小从而实现阵列输出最小。它对输入端的信号(信号和干扰) 均加以抑制, 在波束图上表现为在信号和干扰方向上都产生零点, 零 点的深度和信号的强度有关且信号越强零点越深。 如输入的期望信号 很弱而干扰很强,干扰方向会产生很深的零点从而抑制了干扰信号, 提高了信噪比。
功率倒置指的是自适应天线阵具有倒置两个接收信号的功率比 的能力。 功率倒置算法是直接将阵列的输出作为误差信号, 使的均方 误差最小从而实现阵列输出最小。它对输入端的信号(信号和干扰) 均加以抑制, 在波束图上表现为在信号和干扰方向上都产生零点, 零 点的深度和信号的强度有关且信号越强零点越深。 如输入的期望信号 很弱而干扰很强,干扰方向会产生很深的零点从而抑制了干扰信号, 提高了信噪比。
综上所述,功率倒置(power inversion)阵列不需要预先知道有用信号的特性和入射方向等先验信息,实现简单,在雷达,扩频通信等强干扰,弱信号的环境中得到了广泛应用.
常见的功率倒置结构如下:
matlab2022a仿真结果如下:
%------------------------------------------空时联合处理-------------------------
%for mm=1:6
for mm=1:3
I6(mm)=exp(j*2*pi*R*cos(PhiJ6-2*pi/3*(mm-1))*sin(ThetaJ6)/lamda);
I5(mm)=exp(j*2*pi*R*cos(PhiJ5-2*pi/3*(mm-1))*sin(ThetaJ5)/lamda);
I4(mm)=exp(j*2*pi*R*cos(PhiJ4-2*pi/3*(mm-1))*sin(ThetaJ4)/lamda);
I3(mm)=exp(j*2*pi*R*cos(PhiJ3-2*pi/3*(mm-1))*sin(ThetaJ3)/lamda);
I2(mm)=exp(j*2*pi*R*cos(PhiJ2-2*pi/3*(mm-1))*sin(ThetaJ2)/lamda);
I1(mm)=exp(j*2*pi*R*cos(PhiJ1-2*pi/3*(mm-1))*sin(ThetaJ1)/lamda);%导向矢量
end
I6=[1 I6];
I5=[1 I5];
I4=[1 I4];
I3=[1 I3];
I2=[1 I2];
I1=[1 I1];
%干扰最终表达式
for k=1:pd %快拍
for m=1:M %阵元数
for n=1:N %时延长度
Jam6(k,m,n)=Jam6one(N+k-n)*I6(m);
Jam5(k,m,n)=Jam5one(N+k-n)*I5(m);
Jam4(k,m,n)=Jam4one(N+k-n)*I4(m);
Jam3(k,m,n)=Jam3one(N+k-n)*I3(m);
Jam2(k,m,n)=Jam2one(N+k-n)*I2(m);
Jam1(k,m,n)=Jam1one(N+k-n)*I1(m);
end
end
end
%将空时二维变成一维
JAM6=zeros(pd,M*N);
JAM5=zeros(pd,M*N);
JAM4=zeros(pd,M*N);
JAM3=zeros(pd,M*N);
JAM2=zeros(pd,M*N);
JAM1=zeros(pd,M*N);
for k=1:pd
for m=1:M
for n=1:N
JAM6(k,(m-1)*N+n)=Jam6(k,m,n);
JAM5(k,(m-1)*N+n)=Jam5(k,m,n);
JAM4(k,(m-1)*N+n)=Jam4(k,m,n);
JAM3(k,(m-1)*N+n)=Jam3(k,m,n);
JAM2(k,(m-1)*N+n)=Jam2(k,m,n);
JAM1(k,(m-1)*N+n)=Jam1(k,m,n);
end
end
end
J=JAM6.'+JAM5.'+JAM4.'+JAM3.'+JAM2.'+JAM1.';
%转置
%------------------------------------------产生噪声-------------------------
noise=sqrt(1/2)*randn(pd,M*N)+j*sqrt(1/2)*randn(pd,M*N);
%------------------------------------------产生接收信号-------------------------
%Receive=JAM1+noise;
%Receive=JAM6+JAM5+JAM4+JAM3+noise+JAM2+JAM1;
%Receive=JAM4+noise;
%Receive=JAM4+JAM5+noise;
%接收先信号
Receive0=JAM4+JAM5+JAM6;
%设置接收信号相位差
theta = [15,30,45,60,75]/180*pi;%%信号到达角,
MM = length(theta);
c = 3e8;
d = lamda/2;%阵元间距
%设置不同方向的衰减
Beta = [1,rand(1,MM-1)];
for i = 1:MM
tao = 2*pi*d*sin(theta(i))/lamda;
tmps{i} = Beta(i)*Receive0*exp(-sqrt(-1)*(i-1)*tao);
end
Receive = tmps{1};
for i = 2:MM
Receive = Receive + tmps{i};
end
Receive = Receive + noise;
w_0 = ones(M*N,1);
%------------------------------------------常规求最优权值方法-----------------------
RR=zeros(M*N,M*N);
RR=(Receive.'*(Receive.')')/pd;
deta=[1,zeros(1,(M*N-1))].';
%对Rz进行特征值分解
[ee,ve]=eig(RR);
ene = ee(:,1:2);
ese = ee(:,(3:4));
be = eye(4);
ce = be-ese*ese';
AA1 = RR/max(max(abs(RR)));
Q = AA1'*ce*ce'*AA1;
RR = RR + Q;
%功率倒置
Ws = inv(RR)*deta*inv(deta'*inv(RR)*deta);
%功率倒置
wopt = Ws;
%------------------------------------------画二维方向图----------------------
cida=-pi/2:pi/180:pi/2;
ff=-pi/2:pi/180:pi/2;
for jj=1:1:length(cida) %空间角度扫描
for gg=1:1:length(ff) %时域扫描范围
sss=cida(jj);
ttt=ff(gg);
%for kk=1:6
for kk=1:3
%for kk=1
% w_s_scan(kk)=exp(j*2*pi*R*cos(ttt-2*pi/6*(kk-1))*sin(sss)/lamda);
w_s_scan1(kk)=exp(j*2*pi*R*cos(ttt-2*pi/3*(kk-1))*sin(sss)/lamda);
end %空间导向矢量 1*M
% w_s_scan=w_s_scan([1],[1 2 3 5 7 8 9]);
%w_t_scan=exp(-j*2*pi*(0:1:(N-1)).'*ttt/fs); %时间导向矢量 N*1
%w_s_scan=[1 w_s_scan];
w_s_scan=[1 w_s_scan1];
w_t_scan=exp(-j*2*pi*(0:1:(N-1)).'*freqJ4/fs);
w_scan=kron(w_s_scan.',w_t_scan); %空时联合导向矢量
F3(jj,gg)=abs(wopt'*w_scan); %阵列方向图
% F1(jj,gg)=abs(W_mswf'*w_scan);
end
end
Fmax=max(max(F3));
Fa3=20*log10(F3./Fmax);
figure(3);
mesh(180*cida/pi,ff*180/pi,Fa3.');
ylabel('phi');
xlabel('theta');
zlabel('增益(dB)');
grid on;
01_163m
V