资源简介

天线直线阵 利用遗传算法优化馈电相位以降低副瓣电平

资源截图

代码片段和文件信息

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

评论

共有 条评论