【波束成形】广义旁瓣相消的波束形成算法【附全部MATLAB代码】

文摘   2025-01-05 20:02   辽宁  

微信公众号:EW Frontier
关注可了解更多的雷达、通信、人工智能相关代码。问题或建议,请公众号留言;
如果你觉得EW Frontier对你有帮助,欢迎加入我的知识星球或面包多,更多代码等你来学
知识星球:https://wx.zsxq.com/dweb2/index/group/15552518881412
面包多:https://mbd.pub/o/author-a2mYl2tsbA==/work

QQ交流群:729981694

如有侵权请联系删除~

简介

自适应波束形成技术广泛应用于航空、航天、雷达和通信系统中。自适应波束形成通过调节各 阵元的加权幅度和加权相位,来改变阵列的方向图,使阵列天线的主瓣对准期望用户;同时阵列天 线的零点和副瓣对准其他用户,从而提高接收信噪比 [1,2]。线性约束最小方差 (LCMV)准则是最常 用的自适应波束形成方法。广义旁瓣相消器 (GSC)是 LCMV的一种等效的实现结构 [3,4],GSC结构 将自适应波束形成的约束优化问题转换为无约束的优化问题,分为自适应和非自适应两个支路,分 别称为主支路和辅助支路,要求期望信号只能从非自适应的主支路通过,而自适应的辅助支路中仅 含有干扰和噪声分量,在高信噪比的情况下,将有一部分期望信号泄漏到辅助支路中,出现了信号 相消现象。

主要原理

全部MATLAB代码

GSC.m

clcclear all;close all;
m=8 ;% array阵元p=4; % signal number信号数N=3000;% recursive number 迭代次数 或快拍数A=zeros(m,p); % array pattern阵列流型theta=[30 0 -45 60]*pi/180;% the signal from the direction of 30 degree is expected. DOA 30为期望信号方向j=sqrt(-1);w=[0.01 0.2 0.3 0.4]*pi; % frequency for each signal.各个信号的数字频率
%%s=to_get_s(w,N,p);s_rec=get_s_rec(s,m,p,theta);S=s_rec; % output date matrix .m*N 的阵元输出数据矩阵%%%%——————————————%% 自适应调节权y=S;% input data of GSC;ad=exp(-j*pi*[0:m-1]'*sin(theta(1))) %steering vector in the direction of expected. 期望信号方向导向矢量c=10;% condition 波束形成条件C=ad';Wc=C'*inv(C*C')*c; %main path weight 主通道固定权wa(1:m-1,1)=0; % auxiliary path 辅助通道自适应权B=get_B(m,theta); % get Block Matrix 得到阻塞矩阵u=0.000001;for k=1:N yb=conj(B)*y(:,k); % m-1*1 的列向量 Zc(k)=Wc.'*y(:,k); Za(k)=wa(:,k).'*yb; Z(k)=Zc(k)-Za(k); wa(:,k+1)=wa(:,k)-u*Z(k)*conj(yb);end%%%%------------%%%main path 主通道wop=Wc;drawpp(m,wop);%%%%auxiliary path 辅助通道wop=B'*wa(:,N)drawpp(m,wop);%%array response 总的阵列响应wop=Wc-B'*wa(:,N);drawpp(m,wop);

get_B.m

function Bm=get_B(m,theta)  %用于产生阻塞矩阵%采用正交法构造阻塞矩阵u0=0.5*sin(theta(1)); % 假设阵元间距为半个波长a0=exp(-j*2*pi*[0:m-1]'*u0);u=u0+[1:m-1];B=exp(-j*2*pi*[0:m-1]'*u);Bm=conj(B');%% M-1*M 的矩阵

get_Rxx.m

function Rxx=get_Rxx(s_rec,N,p,m)Rxx=zeros(m,m);x=1:m;for i=1:N    for t=1:m        x(t)=s_rec(t,i);    end    R=x'*x;    Rxx=Rxx+R;endRxx=Rxx/N;

get_s_rec.m

function s_rec=get_s_rec(s,m,p,theta)  %用于产生经过阵元后的信号数据A=zeros(m,p);j=sqrt(-1);%%% 阵元间距为半个波长wi=pi*sin(theta);A=exp(-j*wi'*[0:(m-1)]);  % 阵列流型s_rec=A'*s;s_rec=awgn(s_rec,10);  % SNR=10 db

to_get_s.m

function s=to_get_s(w,N,p)s=zeros(p,N);for i=1:p    s(i,1:N)=exp(j*w(i).*(1:N)); % 复指数信号  假设信道增益为 1end

MATLAB仿真结果

相关学习资料见面包多链接https://mbd.pub/o/author-a2mYl2tsbA==/work

欢迎加入我的知识星球:https://wx.zsxq.com/dweb2/index/group/15552518881412,永久获取更多相关资料、代码。

EW Frontier
学术交流123456群已满,进群请加学术交流Q7群:554073254,进群请备注单位+研究方向。
 最新文章