资源简介
天线直线阵 利用遗传算法优化馈电相位以降低副瓣电平
代码片段和文件信息
clc;
clear all;
close all;
for ttt=1:1
%---------------------二进制编码----Phase Only---------------------
c=3e8; % 光速
fc=6e9; % 工作频率(hz)6GHz
numda=c/fc; % 波长 wave length
N=20; % 阵列数
d=0.5*numda; % 阵元间距
L=N*d; % 天线长
k=(2*pi)/numda; % 波数
fs=10; % 采样频率
theta=-90:1/fs:90; % 方位角度范围(采样范围)(rad)
theta1=-90;
theta2=90;
Ns=length(theta); % 采样点数
theta_d=0; % 主波束方向
% theta_d=0时w1=w2=...=wM=1此时即为静态方向图
u=sin(theta*pi/180)-sin(theta_d*pi/180);
v=k*d*u;
fitness_function=2; % 适应度函数选择
selection_method=3; % 选择方法[12345]
crossver_method=1; % 交叉方法[12345]
mutation_method=1; % 变异方法[123]
N_mult=2; % 多点变异点数
%---------------------参数设置------------------------
SLVL=-20;
R=10.^(-SLVL/20);
gen_max=100;
popsize=50;
coef=10;
%-----------------------GA---------------------------
N0=(Ns-1)/2+1+round(Ns/2*theta_d/90); %the mainbeam center index
theta0=asin(numda/(N*d))*180/pi;
Ns0=round(theta0*fs);
%--------------------相位量化-------------------------------
N_bit=5; % 量化精度
Step_quant=360/(2.^N_bit); % 量化间隔
fs_quant=1/Step_quant;
theta_quanti_room=0:Step_quant:360; % theta_quanti_room=-180:Ts_quant:180
N_length=length(theta_quanti_room); % 量化空间大小
%====================初始染色体==============================================
%------产生初始染色体------------
theta_init=zeros(coef*popsizeN/2);
pos_init=randi([1N_length]coef*popsizeN/2);
theta_init=theta_quanti_room(pos_init);
W_init=exp(j*k*d*sind(theta_init));
%------初始方向图----------------
E_init=zeros(coef*popsizeNs);
for n=1:coef*popsize
for m=1:N/2
E_init(n:)=E_init(n:)+W_init(nm)*cos((2*m-1)/2*v);
end
S_init(n:)=abs(E_init(n:))/max(abs(E_init(n:)));
G_init(n:)=20*log10(S_init(n:)); % G=20*log10(abs(E/I));
MSLL_init(n)= min(abs( G_init(n[1:(N0-Ns0)(N0+Ns0):Ns ])));
end
%-----适应值计算-----------------
if fitness_function==1
fitness_init=MSLL_init; % 适应度函数
elseif fitness_function==2
fitness_init=1./(1*abs(abs(MSLL_init)-abs(SLVL)));
end
%--------从好到坏排序--------------
[fitness_init_resite0]=sort(fitness_init‘descend‘);
MSLL_init_re=MSLL_init(site0);
pos_init_re=pos_init(site0:);
theta_init_re=theta_init(site0:);
W_init_re=W_init(site0:);
E_init_re=E_init(site0:);
S_init_re=S_init(site0:);
G_init_re=G_init(site0:);
%-----------选择父本--------------
fitness_father=fitness_init_re([1:popsize]);
MSLL_father=MSLL_init_re([1:popsize]);
pos_father=p
评论
共有 条评论