相控阵天线matlab程序

来源:互联网 发布:java任务调度quartz 编辑:程序博客网 时间:2024/04/29 11:35
clc;clear all;%%%%%%当波束指向阵面法向时的天线方向图%在波束指向阵面法向时的最大增益值,27dBA=27;%在波束指向阵面法向时的第一副瓣的增益值,-1dBB=-1;%在波束指向阵面法向时的第一零深,-30dBC=-30;%在波束指向阵面法向时的半功率点(3dB)宽度(rad)B_0=1.54*pi/180;%在波束指向阵面法向时的第一零点(rad)alpha_1=1.5*pi/180;%在波束指向阵面法向时的第一旁瓣的峰值所在角度(rad)alpha_1_5=2.5*pi/180;%波束指向,方位角radalpha_0=60*pi/180;%波束指向,方位角radbeta_0=60*pi/180;%比例系数,0<epsilon<=eta<1epsilon=0.4;eta=0.5;%相控阵天线波束增益随扫描角变化的控制因子K_0=cos(alpha_0)*cos(beta_0)/(sqrt((cos(alpha_0))^2+(cos(beta_0))^2*(sin(alpha_0))^2));%加权系数p=0;%没有给出计算式,假定的d_beta=0.004;%相控阵天线波束随扫描角展宽控制因子,可描述为M_0=p*d_beta^2+(4-4*K_0-p*B_0^2)*d_beta/(2*B_0)+K_0;%NewtonDown为牛顿下山法,可在Matlab书籍中找到,这里直接给出了计算结果%TwoStep为两步迭代法,可在Matlab书籍中找到,这里直接给出了计算结果%%%%%%%%% 计算sin(x)=0.707*x%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% x_0(1)=NewtonDown('sin(x)-x*0.707',-1.57,-1,1.0e-4);% x_0(2)=0;% x_0(3)=NewtonDown('sin(x)-x*0.707',1,1.57,1.0e-4);x_0=[-1.3918,0,1.3918];%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 计算sin(x)=x*C/B  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% k=1;% for i=0:3% a1=0+i*2*pi;% b1=pi/2+i*2*pi;% x2(k)=TwoStep('sin(x)-x*10^(-1.45)',a1,b1,1,1.0e-4);% k=k+1;% a2=pi*0.5959+i*2*pi;% b2=pi+i*2*pi;% x2(k)=NewtonDown('sin(x)-x*10^(-1.45)',a2,b2,1.0e-4);% k=k+1;% end% i=4;% a1=0+i*2*pi;% b1=pi/2+i*2*pi;% x2(k)=TwoStep('sin(x)-x*10^(-1.45)',a1,b1,1,1.0e-4);% k=k+1;% a2=pi/2+0.0001*pi+i*2*pi;% b2=pi+i*2*pi;% x2(k)=NewtonDown('sin(x)-x*10^(-1.45)',a2,b2,1.0e-4);% j=1;% while (k>1)%     x22(j)=-x2(k);%     j=j+1;%     k=k-1;% end% x_2=cat(2,x22,x2);x_2=[-26.995,-26.3398,-21.1428,-19.6195,-15.1408,-13.0477,-9.0962,-6.5165,-3.0337,0,3.0337,6.5165,9.0962,13.0477,15.1408,19.6195,21.1428,26.3398,26.995];%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%计算 sin(x)=x*C/(0.707*A)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% k=1;% for i=0:75% a1=0+i*2*pi;% b1=pi/2+i*2*pi;% x1(k)=TwoStep('sin(x)-x*10^(-2.85)/0.707',a1,b1,1,1.0e-4);% k=k+1;% a2=pi*0.5959+i*2*pi;% b2=pi+i*2*pi;% x1(k)=NewtonDown('sin(x)-x*10^(-2.85)/0.707',a2,b2,1.0e-4);% k=k+1;% end% % for i=76:79% a1=0+i*2*pi;% b1=pi/2-0.0001*pi+i*2*pi;% x1(k)=TwoStep('sin(x)-x*10^(-2.85)/0.707',a1,b1,1,1.0e-4);% k=k+1;% a2=pi/2+0.00001*pi+i*2*pi;% b2=pi+i*2*pi;% x1(k)=NewtonDown('sin(x)-x*10^(-2.85)/0.707',a2,b2,1.0e-4);% k=k+1;% end% j=1;% k=k-1;% while (k>1)%     x11(j)=-x1(k);%     j=j+1;%     k=k-1;% end% x_1=cat(2,x11,x1);x_1=[-498.0419,-497.8389,-491.8457,-491.4688,-485.6207,-485.1274,-479.3845,-478.7972,-473.142,-472.4734,-466.8951,-466.1538,-460.6452,-459.8374,-454.3928,-453.5233,-448.1385,-447.2112,-441.8827,-440.9007,-435.6255,-434.5915,-429.3671,-428.2835,-423.1078,-421.9764,-416.8476,-415.6702,-410.5867,-409.3648,-404.325,-403.06,-398.0628,-396.7559,-391.7999,-390.4523,-385.5366,-384.1492,-379.2728,-377.8466,-373.0086,-371.5445,-366.744,-365.2427,-360.479,-358.9413,-354.2137,-352.6402,-347.9481,-346.3394,-341.6822,-340.0389,-335.416,-333.7387,-329.1496,-327.4388,-322.8829,-321.1391,-316.616,-314.8396,-310.3489,-308.5403,-304.0815,-302.2412,-297.814,-295.9423,-291.5463,-289.6436,-285.2785,-283.3451,-279.0104,-277.0467,-272.7423,-270.7485,-266.4739,-264.4504,-260.2055,-258.1525,-253.9369,-251.8547,-247.6682,-245.557,-241.3994,-239.2594,-235.1304,-232.962,-228.8614,-226.6646,-222.5922,-220.3674,-216.323,-214.0702,-210.0536,-207.7732,-203.7842,-201.4762,-197.5147,-195.1793,-191.2451,-188.8825,-184.9754,-182.5858,-178.7057,-176.2891,-172.4359,-169.9925,-166.166,-163.696,-159.8961,-157.3995,-153.6261,-151.1031,-147.356,-144.8068,-141.0859,-138.5105,-134.8158,-132.2142,-128.5456,-125.918,-122.2753,-119.6219,-116.005,-113.3257,-109.7347,-107.0297,-103.4643,-100.7336,-97.1939,-94.4376,-90.9235,-88.1416,-84.6531,-81.8457,-78.3826,-75.5497,-72.1121,-69.2538,-65.8415,-62.958,-59.571,-56.6621,-53.3004,-50.3663,-47.0298,-44.0705,-40.7592,-37.7747,-34.4886,-31.4789,-28.2179,-25.1831,-21.9473,-18.8873,-15.6766,-12.5915,-9.406,-6.2958,-3.1353,0,3.1353,6.2958,9.406,12.5915,15.6766,18.8873,21.9473,25.1831,28.2179,31.4789,34.4886,37.7747,40.7592,44.0705,47.0298,50.3663,53.3004,56.6621,59.571,62.958,65.8415,69.2538,72.1121,75.5497,78.3826,81.8457,84.6531,88.1416,90.9235,94.4376,97.1939,100.7336,103.4643,107.0297,109.7347,113.3257,116.005,119.6219,122.2753,125.918,128.5456,132.2142,134.8158,138.5105,141.0859,144.8068,147.356,151.1031,153.6261,157.3995,159.8961,163.696,166.166,169.9925,172.4359,176.2891,178.7057,182.5858,184.9754,188.8825,191.2451,195.1793,197.5147,201.4762,203.7842,207.7732,210.0536,214.0702,216.323,220.3674,222.5922,226.6646,228.8614,232.962,235.1304,239.2594,241.3994,245.557,247.6682,251.8547,253.9369,258.1525,260.2055,264.4504,266.4739,270.7485,272.7423,277.0467,279.0104,283.3451,285.2785,289.6436,291.5463,295.9423,297.814,302.2412,304.0815,308.5403,310.3489,314.8396,316.616,321.1391,322.8829,327.4388,329.1496,333.7387,335.416,340.0389,341.6822,346.3394,347.9481,352.6402,354.2137,358.9413,360.479,365.2427,366.744,371.5445,373.0086,377.8466,379.2728,384.1492,385.5366,390.4523,391.7999,396.7559,398.0628,403.06,404.325,409.3648,410.5867,415.6702,416.8476,421.9764,423.1078,428.2835,429.3671,434.5915,435.6255,440.9007,441.8827,447.2112,448.1385,453.5233,454.3928,459.8374,460.6452,466.1538,466.8951,472.4734,473.142,478.7972,479.3845,485.1274,485.6207,491.4688,491.8457,497.8389,498.0419];%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%m=1;n=1;num=length(-6:0.05:6);g=zeros(num,num);for alpha=-6:0.05:6    alpha_rad=alpha*pi/180;    for beta=-6:0.05:6        beta_rad=beta*pi/180;        delta=acos(cos(alpha_rad)*cos(beta_rad)/(sqrt((cos(alpha_rad))^2+(cos(beta_rad))^2*(sin(alpha_rad))^2)));        if (delta>=0)&(delta<=B_0/(2*M_0))            g(m,n)=A*sinc(2*x_0(3)*delta*M_0/B_0)*sqrt(K_0);                    elseif (delta>B_0/(2*M_0))&(delta<=alpha_1/M_0)            g(m,n)=0.707*A*sinc(2*x_1(290)*M_0*(delta-B_0/(2*M_0))/(2*alpha_1-B_0))*sqrt(K_0);                    elseif delta>alpha_1/M_0            g(m,n)=B*sinc(x_2(11)*M_0*(delta-alpha_1_5/M_0)/(alpha_1_5-alpha_1))*sqrt(K_0);                    else            disp('输入超界限');            return;        end        n=n+1;        if n>num            n=1;        end    end    m=m+1;    if m>num        m=1;    endendalpha=-6:0.05:6;beta=-6:0.05:6;figure(1)[alpha,beta]=meshgrid(alpha,beta);surf(alpha,beta,g)xlim([-6,6])ylim([-6,6])

2 0