发布日期:2024-10-25 10:00 点击次数:185
从前文《相控阵天线波束宽度分析》咱们知说念相控阵天线的波束宽度是与口径和扫描角度联系的函数。淌若咱们要达到很高的离别率,就需要波束宽度很窄,此时天线的口径就需要很大。相控阵天线的间距一般为半波长极乐净土 裸舞,此时需要的天线数目以及后端的TR组件数目会增多许多,极地面增多了天线的分娩资本。管制相控阵天线资本居高不下的程序之一等于接受稀疏阵列。
稀疏阵列是从均匀远离满阵中稀疏掉部分阵元,这么就酿成了阵元间距操纵为某个基本量(频繁为半倍波长)的整数倍的非均匀阵列;稀疏阵列在不更变阵列孔径的要求下,即保握阵列高离别率的前提下,减少阵元数目并优化各阵元的物理布局,产生知足祈望性能的波束标的图,大幅度裁减了资本。由于这么策画的稀疏阵列的大部分阵元间距大于半波长,因此硬件布局布线的冗余度更高,简化了天线结构和馈电齐集,裁减了散热难度,同期其阵元间的互耦效应与均匀阵列比拟更弱,在骨子环境中具备更好的性能。
关于一个均匀平面阵列,淌若咱们用fmn暗示其每个单位的使命情状,那么咱们就不错取得三种情状,fmn全为1,此时为满阵,也等于均匀平面阵;fmn全为0,此时莫得一个单位使命;fmn部分为0,部分为1,此时便为稀疏阵列。因此咱们引入加权因子fmn,给均匀平面阵列的阵因子进行加权,即可取得稀疏平面阵列。加权阵因子如下暗示:
勾引指南图片极乐净土 裸舞
因阵元间距是突破漫衍且大于等于半波长,稀疏阵列所抽象出来的扫描波束标的图中可能存在与主瓣皆平的栅瓣、或较高电平的副瓣,导致标的图中在无回波的场合出现裂缝目的。骨子工程应用对天线的离别力要求很高,因而主瓣宽度要尽量窄,同期尽可能裁减峰值旁瓣电平。是以咱们接受最大旁瓣电平当作适合度函数,当最大旁瓣电平MSLL最小时优化为止。
2 算法经由遗传算法是一种全局性的概率搜索算法,该算法平直对问题进行操作,不需要复杂的计较公式,在搜索过程中可束缚蕴蓄辅导和学问,不需要借助于外界信息,只需要依靠自己产生的搜索空间的学问,便可找到最优解。圭表的遗传算法是依据适合度对种群进行礼聘、交叉及变异操作,直到达到最大的进化代数。是以咱们不错以下经由来进行操作:
第一步,笃定适合度,并编制适合度函数。本例以最大旁瓣电平为适合度函数。
第二步,笃定进化代数,进化代数一般礼聘100-1000,并生成一定的种群,种群数目一般礼聘10-200。本例中使用randn()函数生成允洽正态漫衍的。令其中NL(稀疏完剩余的单位个数)个单位为1,其余单位为0。
第三步,对种群中的每个个体计较适合度,并保留最优的适合度个体。
第四步,进行礼聘操作,也可称为复制操作,行将知足适合度累积概率的个体刻舟求剑的复制到下一代中极乐净土 裸舞,接受轮盘赌的礼聘操作,应用各个个体适合度所占比例的大小来决定其子代保留的可能性。若某个个体i的适合度为fiti,种群大小为Np,则它被选取的概率暗示为:
图片
个体适合度越大,则其被礼聘的契机也越大;反之也是。为了礼聘交叉的个体,需要进行多轮礼聘。每一轮产生一个(0,1)内的均匀立时数,将该立时数当作礼聘指针来笃定被选个体。本例中生成一个种群数目大小的介于(0,1)之间的立时数,不含0和1。与归一化适合度的累积概率进行对比,选出累积概率大的个体。
第五步,进行交叉操作,交叉概率一般礼聘0.25-1。将选中的偶数个体和与奇数个体进行以交叉概率进行交叉,酿成新的个体。
第六步,进行变异操作,变异概率一般礼聘0.001-0.1。将允洽变异概率的基因值取反,即被选中的基因值为1,则其值变为0;若被选中的基因值为0,则其值变为1。
第七步,确保稀疏率不变,即稀疏后的骨子单位个数不变。若骨子单位个数变小,从0情状单位中立时礼聘,强制其为1情状;若骨子单位个数变多,则从1情状的单位中立时礼聘,强制其为0情状。
第八步,将取得的最优个体加权到阵因子上,取得稀疏后的阵因子。
3 MATLAB代码
优化代码如下:
%%%%%%%%%%%%%遗传算法稀疏平面阵%%%%%%%%%%%%%%%%%%%%%%%%%%运行化参数%%%%%%%%%%%%%%%clear; %清变量close all; %清图clc; %清屏NP = 50; %种群数目Pc = 0.8; %交叉率Pm = 0.01; %变异率d = 0.5; %满阵阵元间距,半倍波长lamda = 1; %波长G = 200; %最大遗传代数Ny = 20; %场合满阵阵元个数Nz = 10; %俯仰满阵阵元个数L = Ny*Nz; %满阵阵元个数NL = 100; %骨子阵元个数theta0 = 0*pi/180; %俯仰指向phi0 = 0*pi/180; %场合指向NA = 360; %空间场合角采样数NE = 360; %空间俯仰角采样数%%%%%%%%%%%%%生成运行种群%%%%%%%%%%%%%%%%%%%%%%%%%0为莫得阵元,1为有阵元%%%%%%f = randn(L,NP);[sortff,Index] = sort(f);f = zeros(L,NP);for i = 1:NP f(Index(end-NL+1:end,i),i) = 1;end%%%%%%%%%%遗传算法轮回%%%%%%%%%%%%%%for k = 1:G k %%%%计较适合度,即峰值旁瓣%%%%% for i = 1:NP Fit(i) = func_plane(lamda,Ny,Nz,d,theta0,phi0,NA,NE,f(:,i)); end maxFit = max(Fit); %最大值 minFit = min(Fit); %最小值 rr = find(Fit==maxFit); %找出最大值 fBest = f(:,rr(1,1)); %历代最优个体 Fit = (Fit-minFit)/(maxFit-minFit); %归一化适合度值 %%%%%%%基于轮盘赌的复制操作%%%%%%%% sum_Fit = sum(Fit); fitvalue = Fit./sum_Fit; fitvalue = cumsum(fitvalue); ms = sort(rand(NP,1)); fiti = 1; newi = 1; while newi<=NP if (ms(newi))<fitvalue(fiti) nf(:,newi) = f(:,fiti); newi = newi+1; else fiti = fiti+1; end end %%%%%%%%%基于概率的交叉操作%%%%%%%%%% for i = 1:2:NP p = rand(1,1); if p<Pc q = randi([0,1],1,L); for j = 1:L if q(j)==1 temp = nf(j,i+1); nf(j,i+1) = nf(j,i); nf(j,i) = temp; end end end end %%%%%%%基于概率的变异操作%%%%%%%%% for m = 1:NP for n = 1:L r = rand(1,1); if r < Pm nf(n,m) = ~nf(n,m); end end end %%%%使交叉变异后的 骨子阵元个数不变%%%%% for i = 1:NP n_ones = sum(nf(:,i)); while n_ones>(NL) nn1 = find(nf(:,i)==1); MUT1 = randi([1,n_ones],1,n_ones-NL); for m = 1:(n_ones-NL) nf(nn1(MUT1(m)),i) = 0; end n_ones = sum(nf(:,i)); end while n_ones<(NL) nn2 = find(nf(:,i)==0); MUT2 = randi([1,L-n_ones],1,NL-n_ones); for m = 1:(NL-n_ones) nf(nn2(MUT2(m)),i) = 1; end n_ones = sum(nf(:,i)); end end f = nf; f(:,1) = fBest; %保留最优个体在新种群中 trace(k) = maxFit; %历代最优适合度endfigureplot(trace)xlabel('迭代次数')ylabel('目的函数值')title('适合度进化弧线')grid onsave fBest.mat fBest %存储优化恶果适合度函数代码如下:
%%%%%%%%%%%%%%%%计较最大旁瓣%%%%%%%%%%%%%%%function MSLL=func_plane(lamda,Ny,Nz,d,theta0,phi0,NA,NE,f0)eps = 0.0001;bottom = -50;f = reshape(f0,Ny,Nz); phi = linspace(-pi/2,pi/2,NA); theta = linspace(-pi/2,pi/2,NE); aa = [0:d:(Ny-1)*d];DD1 = repmat(aa',1,Nz);bb = [0:d:(Nz-1)*d];DD2 = repmat(bb,Ny,1);DD = DD1+sqrt(-1).*DD2;for ii = 1:length(theta);%%%%%%%%%%%%%%%%计较最大旁瓣%%%%%%%%%%%%%%%function MSLL=func_plane(lamda,Ny,Nz,d,theta0,phi0,NA,NE,f0)eps = 0.0001;bottom = -50;f = reshape(f0,Ny,Nz); phi = linspace(-pi/2,pi/2,NA); theta = linspace(-pi/2,pi/2,NE); aa = [0:d:(Ny-1)*d];DD1 = repmat(aa',1,Nz);bb = [0:d:(Nz-1)*d];DD2 = repmat(bb,Ny,1);DD = DD1+sqrt(-1).*DD2;for ii = 1:length(theta); pattern(ii) = sum(sum((exp(sqrt(-1)*2*pi/lamda*(sin(phi0)... * cos(theta(ii))*real(DD)+sin(theta(ii))*imag(DD)... -sin(phi0)*cos(theta0)*real(DD)-sin(theta0)*imag(DD)))).*f));endmax_p = max(abs(pattern));FdB1 = 20*log10(abs(pattern)/max_p+eps);mm = ceil(find(FdB1==max(FdB1)));tu_up = 0; while (FdB1(mm+tu_up)>=FdB1(mm+tu_up+1)) tu_up = tu_up+1;endtu_down = 0;while (FdB1(mm-tu_down)>=FdB1(mm-tu_down-1)) tu_down = tu_down+1;endFdB1(mm-tu_down:mm+tu_up) = bottom;sll_1 = max(FdB1);for jj = 1:length(phi); pattern(jj) = sum(sum((exp(sqrt(-1)*2*pi/lamda*(sin(phi(jj))... * cos(theta0)*real(DD)+sin(theta0)*imag(DD)... -sin(phi0)*cos(theta0)*real(DD)-sin(theta0)*imag(DD)))).*f));endmax_p = max(abs(pattern));FdB2 = 20*log10(abs(pattern)/max_p+eps);nn = find(FdB2==max(FdB2));tv_up = 0; while (FdB2(nn+tv_up)>=FdB2(nn+tv_up+1)) tv_up = tv_up+1;endtv_down = 0;while (FdB2(nn-tv_down)>=FdB2(nn-tv_down-1)) tv_down = tv_down+1;endFdB2(nn-tv_down:nn+tv_up) = bottom;sll_2 = max(FdB2);MSLL = abs(sll_1)+abs(sll_2);end pattern(ii) = sum(sum((exp(sqrt(-1)*2*pi/lamda*(sin(phi0)... * cos(theta(ii))*real(DD)+sin(theta(ii))*imag(DD)... -sin(phi0)*cos(theta0)*real(DD)-sin(theta0)*imag(DD)))).*f));endmax_p = max(abs(pattern));FdB1 = 20*log10(abs(pattern)/max_p+eps);mm = ceil(find(FdB1==max(FdB1)));tu_up = 0; while (FdB1(mm+tu_up)>=FdB1(mm+tu_up+1)) tu_up = tu_up+1;endtu_down = 0;while (FdB1(mm-tu_down)>=FdB1(mm-tu_down-1)) tu_down = tu_down+1;endFdB1(mm-tu_down:mm+tu_up) = bottom;sll_1 = max(FdB1);for jj = 1:length(phi); pattern(jj) = sum(sum((exp(sqrt(-1)*2*pi/lamda*(sin(phi(jj))... * cos(theta0)*real(DD)+sin(theta0)*imag(DD)... -sin(phi0)*cos(theta0)*real(DD)-sin(theta0)*imag(DD)))).*f));endmax_p = max(abs(pattern));FdB2 = 20*log10(abs(pattern)/max_p+eps);nn = find(FdB2==max(FdB2));tv_up = 0; while (FdB2(nn+tv_up)>=FdB2(nn+tv_up+1)) tv_up = tv_up+1;endtv_down = 0;while (FdB2(nn-tv_down)>=FdB2(nn-tv_down-1)) tv_down = tv_down+1;endFdB2(nn-tv_down:nn+tv_up) = bottom;sll_2 = max(FdB2);MSLL = abs(sll_1)+abs(sll_2);end
优化后标的图代码如下:
%%%%%%%%%%%%优化后标的图%%%%%%%%%%%%%clc;close all;clear allload('fBest.mat')d = 0.5;lamda = 1;Ny = 20;Nz = 10;theta0 = 0*pi/180;phi0 = 0*pi/180;NA = 360;NE = 360;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%phi = linspace(-pi/2,pi/2,NA); theta = linspace(-pi/2,pi/2,NE); aa = [0:d:(Ny-1)*d];DD1 = repmat(aa',1,Nz);bb = [0:d:(Nz-1)*d];DD2 = repmat(bb,Ny,1);DD = DD1+sqrt(-1).*DD2;f = reshape(fBest,Ny,Nz);for jj = 1:length(phi); for ii = 1:length(theta); pattern(jj,ii) = sum(sum(exp(sqrt(-1)*2*pi/lamda*(sin(phi(jj))... * cos(theta(ii))*real(DD)+sin(theta(ii))*imag(DD)... -sin(phi0)*cos(theta0)*real(DD)-sin(theta0)*imag(DD))).*f)); endendmax_p = max(max(abs(pattern)));pattern_dbw = 20*log10(abs(pattern)/max_p+eps);figure;mesh(theta*180/pi,phi*180/pi,pattern_dbw);xlabel('俯仰角');ylabel('场合角')figure %场合向切面图temp1 = pattern_dbw(:,round(NE*((pi/2+theta0)/pi)));plot(phi*180/pi,temp1)gridxlabel('\phi场合角(度)')ylabel('阵列增益(dB)')figure %俯仰向切面图temp2 = pattern_dbw(round(NA*((pi/2+phi0)/pi)),:);plot(theta*180/pi,temp2)gridxlabel('\theta俯仰角(度)')ylabel('阵列增益(dB)')figurefor ii = 1:Nzplot(f(:,ii)*ii,'o'),hold onendxlabel('场合向')ylabel('俯仰向')axis([1,Ny,1,Nz])运行代码后取得优化后三维标的图如下:
图片
场合面标的图如下:
图片
俯仰面标的图如下:
图片
参考文件:佘秀雅,低资本相控阵雷达高离别率程序计议。 包子阳,基于matlab的遗传算法偏激在稀列阵列天线中的应用。 本站仅提供存储劳动,通盘内容均由用户发布,如发现存害或侵权内容,请点击举报。