主要内容

基于代理的六元八木天线优化设计

此示例优化一个6元素Yagi-UDA天线,用于方向性和50 Ω 使用称为代理优化的全局优化技术进行输入匹配。天线的辐射模式和输入阻抗对决定其形状的参数很敏感。必须在其上执行此类优化的多维曲面具有多个局部优化。这使得寻找满足优化目标的正确参数集的任务特别具有挑战性,需要使用全局优化技术。该八木-田天线用于在HAM无线电设置中作为中继站的一部分操作。

设计参数

在VHF波段中心选择初始设计参数。

fc = 144.5 e6;wirediameter = 12 e - 3;c = physconst ('LightSpeed');λ= c / fc;Z0 = 50;BW = 0.015 *俱乐部;fmin = fc - 2*(BW);fmax = fc + 2*(BW);Nf = 101;频率= linspace (fmin fmax, Nf);

创建Yagi-Uda天线

驱动元件为这个八木天线是一个偶极子。这是这种天线的标准激励器。调整偶极子的长度和宽度参数。由于我们将圆柱形结构建模为等效金属条,因此宽度是使用天线工具箱™中的实用函数计算的。长度选择为近似 λ / 2 在设计频率。

d =偶极;d.length = 0.982。*(lambda / 2);D.Width =圆柱形(Wirediameter / 2);D.Tilt = 90;d.tiltaxis =“Y”

用激励器创建一个YAGI-UDA天线作为偶极子。将董事人数设置为四个。元素长度的选择和元素之间的间隔是初始猜测,并且将用作优化过程的起点。显示初始设计。

numdirs = 4;反应= 0.25;dirlength = [0.940 0.910 0.850 0.830];refspacing = 0.35;Dirspacing = [0.15 0.2 0.3 0.3];initialdesign = [Remarthteging Refspacing Dirspacing]。* lambda;Yagidesign = Yagiuda;Yagidesign.exciter = D;yagidesign.numdirectors = numdirs;yagidesign.reflectorLength = Remrorge; yagidesign.DirectorLength = dirLength; yagidesign.ReflectorSpacing = refSpacing*lambda; yagidesign.DirectorSpacing = dirSpacing*lambda; show(yagidesign)

在设计频率绘制辐射图

在执行优化过程之前,在3D中绘制出初始猜测的辐射模式。

模式(yagidesign、fc);

这个初始的Yagi-UDA天线在优选方向上没有更高的方向性,意味着在Zenith(升高= 90°),因此是一个设计不良的散热器。

设置优化

使用以下变量作为优化的控制变量:

  • 反射器长度(1变量)

  • 反射镜间距(1变量)

  • 导演间距(4个变量)

就单个矢量参数而言controlVals, 放

  • 反射器长度=ControlVals(1)

  • 反射器间距=ControlVals(2)

  • 导演间隔=ControlVals(3:6)

而言,controlVals,设置目标函数,目标函数在90度方向上具有较大的方向性值,在-90度方向上具有较小的方向性值,在仰角波束宽度角度界限之间具有较大的最大功率值。除了方向性目标外,还包括阻抗匹配条件作为约束。任何违反约束的行为都会对目标造成惩罚。

类型yagi_objective_function_surrogate.m
函数objectivevalue = yagi_objective_function_surrogate (fc, y, controlVals BW, ang Z0,约束)% YAGI_OBJECTIVE_FUNCTION 6元素返回目标八木% OBJECTIVE_VALUE = % YAGI_OBJECTIVE_FUNCTION (Z0 y, controlVals,频率,ang,约束),分配%合适的寄生维度,controlVals y八木天线,%并利用频率FREQ、角度对、ANG、参考阻抗Z0和%等约束条件来计算目标函数值。% YAGI_OBJECTIVE_FUNCTION函数用于内部示例。它的行为可能会在以后的版本中改变,所以不应该依赖它来进行编程。% Copyright 2018 The MathWorks, Inc. y.r ectorlength = controlVals(1);y.ReflectorSpacing = controlVals (2);y.DirectorSpacing = controlVals(3:结束);% Unpack constraints = constraints.Gmin;Gdev = constraints.Gdeviation;FBmin = constraints.FBmin; S11min = constraints.S11min; K = constraints.Penalty; % Calculate antenna port and field parameters output = analyzeAntenna(y,fc,BW,ang,Z0); % Form objective function output1 = output.MaxDirectivity+output.MismatchLoss; % Directivity/Gain at zenith Gain1 = output.MaxDirectivity1+output.MismatchLoss1; % Directivity/Gain at zenith Gain2 = output.MaxDirectivity2+output.MismatchLoss2; % Directivity/Gain at zenith % Gain constraint, e.g. G > 10 c1 = 0; if output1Gdev c1_dev_temp = -Gdev + abs(output1-Gmin); end if abs(Gain1-Gmin)>Gdev c1_dev_temp1 = -Gdev + abs(Gain1-Gmin); end if abs(Gain2-Gmin)>Gdev c1_dev_temp2 = -Gdev + abs(Gain2-Gmin); end c1_dev = (c1_dev_temp+c1_dev_temp1+c1_dev_temp2)/3; % Front to Back Ratio constraint, e.g. F/B > 15 c2 = 0; % if output.FB < FBmin % c2 = FBmin-output.FB; % end c2 = (abs(FBmin-output.FB)+abs(FBmin-output.FB1)+abs(FBmin-output.FB2))/3; % Reflection Coefficient, S11 < -10 c3 = 0; if output.S11 > S11min c3 = -S11min + output.S11; end % Form the objective + constraints objectivevalue = -output1 + max(0,(c1+c1_dev+c2+c3))*K; end function output = analyzeAntenna(ant,fc,BW,ang,Z0) %ANALYZEANTENNA calculate the objective function % OUTPUT = ANALYZEANTENNA(Y,FREQ,BW,ANG,Z0) performs analysis on the % antenna ANT at the frequency, FC, and calculates the directivity at the % angles specified by ANG and the front-to-back ratio. The reflection % coefficient relative to reference impedance Z0, and impedance are % computed over the bandwidth BW around FC. fmin = fc - (BW/2); fmax = fc + (BW/2); Nf = 5; freq = unique([fc,linspace(fmin,fmax,Nf)]); fcIdx = freq==fc; fcIdx1 = freq==fmin; fcIdx2 = freq==fmax; s = sparameters(ant,freq,Z0); Z = impedance(ant,fc); Z1 = impedance(ant,fmin); Z2 = impedance(ant,fmax); az = ang(1,:); el = ang(2,:); Dmax = pattern(ant,fc,az(1),el(1)); Dmax1 = pattern(ant,fmin,az(1),el(1)); Dmax2 = pattern(ant,fmax,az(1),el(1)); Dback = pattern(ant,fc,az(2),el(2)); Dback1 = pattern(ant,fmin,az(2),el(2)); Dback2 = pattern(ant,fmax,az(2),el(2)); % Calculate F/B F_by_B = Dmax-Dback; F_by_B1 = (Dmax1-Dback1); F_by_B2 = (Dmax2-Dback2); % Compute S11 and mismatch loss s11 = rfparam(s,1,1); S11 = max(20*log10(abs(s11))); T = mean(10*log10(1 - (abs(s11)).^2)); T1 = max(10*log10(1 - (abs(s11(fcIdx1))).^2)); T2 = max(10*log10(1 - (abs(s11(fcIdx2))).^2)); % Form the output structure output.MaxDirectivity= Dmax; output.BackLobeLevel = Dback; output.MaxDirectivity1= Dmax1; output.BackLobeLevel1 = Dback1; output.MaxDirectivity2= Dmax2; output.BackLobeLevel2 = Dback2; output.FB = F_by_B; output.FB1 = F_by_B1; output.FB2 = F_by_B2; output.S11 = S11; output.MismatchLoss = T; output.MismatchLoss1 = T1; output.MismatchLoss2 = T2; output.Z = Z; output.Z1 = Z1; output.Z2 = Z2; end

设置控制变量的边界。

refLengthBounds = (0.1;反射器长度下限%0.6);反射器间距上限%dirLengthBounds = [0.3 0.3 0.3 0.3;导演长度的百分比下限0.7 0.7 0.7 0.7];董事长度上限%refspacingbounds = [0.25;反射器间距下限%0.65);反射器间距上限%dirSpacingBounds = [0.01 0.1 0.1 0.1 0.1];导演间距下限为0.2 0.25 0.3 0.30.2 0.25 0.35 0.35];指向器间距的上限ExceriterLengthBounds = [0.45;励磁长度下的%下限0.6);激振器长度上限%exciterSpacingBounds = [04;.008];LB = [refengthbounds (1) refSpacingBounds(1) dirSpacingBounds(1,:)].*lambda;UB = [refengthbounds (2) refSpacingBounds(2) dirSpacingBounds(2,:)].*lambda;parameterBounds。磅=磅;parameterBounds。乌兰巴托=乌兰巴托;Ang = [0 0;90 -90];%方位角,仰角为主瓣和后瓣[AZ; EL]

基于代理的优化

全局优化工具箱™提供了一个名为代理。我们使用此功能与指定的选项优化选择功能。在每次迭代时,绘制目标函数的最佳值,并将迭代总数限制为300.通过使用匿名功能与界限和选项结构一起通过目标函数。期间使用的目标函数优化过程代理是否可在文件中找到yagi_objective_function

%优化器选项优化器='代理'如果Strcmpi(优化器,“PatternSearch”) optimizerparams = optimoptions(@patternsearch);optimizerparams。UseCompletePoll = true;optimizerparams。PlotFcns = @psplotbestf;OptimizerParams.UseCallelate = True;optimizerparams。缓存='在';optimizerparams。MaxFunctionEvaluations = 1200;optimizerparams。FunctionTolerance = 1飞行;eleesifStrcmpi(优化器,'代理')OptimizerParams = Optimoptions(@SurrogateOpt);OptimizerParams.UseCallelate = True;OptimizerParams.maxFunctionEvaluations = 600;OptimizerParams.minsurrogatePoints = 12;OptimizerParams.initialPoints = initialDesign;其他的错误(优化器不支持的金宝app);结束%天线设计参数DesignParams.Antenna = Yagidesign;DesignParams.Bounds = ParameterBounds;%分析参数analysisparams。CenterFrequency = fc;analysisparams。带宽= BW;analysisparams。ReferenceImpedance = Z0;analysisparams。MainLobeDirection = ang (: 1);analysisparams。BackLobeDirection =盎(:,2);%设置约束约束。S11min = -15;约束。Gmin = 10;约束。Gdeviation = 0.1;约束。FBmin = 20;约束。点球= 75;poolobj =质量;
使用“local”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:6)。
optimdesign = optimizeAntennaSurrogate (designparams, analysisparams、约束optimizerparams);

surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。

情节优化模式

在设计频率下绘制优化的天线图案。

yagidesign。ReflectorLength = optimdesign (1);yagidesign。ReflectorSpacing = optimdesign (2);yagidesign。DirectorSpacing = optimdesign(三6);模式(yagidesign fc)

E和H平面削减图案

为了更好地了解两个正交平面上的行为,在E面和h面绘制电场的归一化幅度,即方位角分别为0和90度。在极坐标图上使用天线度量来确定天顶的方向性、前后比和E面和h面波束宽度。

fU = fc+ BW/2;fL = fc-BW / 2;图;patternElevation (yagidesign fc 0,“高度”, 0:1:359);pE = polarpattern ('GCO');de_fl = parayselevation(Yagidesign,FL,0,“高度”, 0:1:359);DE_fU = patternElevation (yagidesign赋0,“高度”, 0:1:359);添加(pe,[de_fl,de_fu])pe.magnitudelim = [-20 15];pe.titletop =.“E-plane方向性(dBi)”;体育。LegendLabels = {[num2str (fc. / 1 e6),'MHz']、[num2str(液体/ 1 e6),'MHz']、[num2str (fU. / 1 e6),'MHz'];

图;图案线(Yagidesign,FC,90,“高度”, 0:1:359);pH = polarpattern ('GCO');90年,佛罗里达州DH_fL = patternElevation (yagidesign的“高度”, 0:1:359);dh_fu =模式(Yagidesign,Fu,90,“高度”, 0:1:359);add(pH,[DH_fL, DH_fU]) pH. magnitelim = [-20 15];pH.TitleTop =“h面方向(dBi) ';ph.legendlabels = {[num2str(fc./1e6),'MHz']、[num2str(液体/ 1 e6),'MHz']、[num2str (fU. / 1 e6),'MHz'];

经过优化设计,辐射方向图有了明显改善。有更高的方向性,在期望的方向,向天顶。后瓣是小的,导致一个良好的前与后比的天线。

优化天线的输入反射系数

相对于参考阻抗计算并绘制优化的YAGI-UDA天线的输入反射系数 5. 0. Ω 。值-10 dB或更低的值被认为是良好的阻抗匹配。

s =斯波拉姆计(Yagidesign,Freq,Z0);图;RFPLOT;

制表初始和优化的设计

将最初的设计猜测和最终的优化设计值制成表格。

Yagiparam = {反射器长度的“反射器间距”“董事间距- 1”“董事间距 -  2”“总监间距 -  3”“董事间距- 4”};InitialDesign = initialDesign';OptimDesign = OptimDesign';Tgeometry =表(initialdesign,optimdesign,'rownames',yagiparam)
Tgeometry =6×2表initialdesign optimdesign _____________ ___________ Reflector Length 0.51867 1.1327 Reflector Spacing 0.72614 0.87689 Director Spacing - 1 0.3112 0.20547 Director Spacing - 2 0.41494 0.4871 Director Spacing - 3 0.62241 0.66081 Director Spacing - 4 0.62241 0.72399

制造的天线

进行了八木优化设计。真正的八木需要一个沿着纵向轴的支撑元件来传递金宝app机械刚性。这种支撑元金宝app件称为臂架,通常由非金属材料制成。在这种情况下,pVC管被用来制造吊杆。注意,在天线工具箱yagiUda元素中没有模拟此杆的效果。分析输入匹配的另一种方法是计算并绘制驻波比(VSWR)。根据优化设计计算并绘制预测驻波比。并用驻波比计测量了所制作天线的驻波比。该数据保存在CSV文件中。将测量结果与分析叠加。

vswr_measured = csvread ('swr_values_sep_15.csv',1,0);图VSWR(yagidesign,频率,Z0)保持绘图(VSWR_Measured(:,1),VSWR_Measured(:,2),“k -”。) 传奇(“分析”“测量”)标题(“驻波比比较-分析中没有同轴电缆”) ylabel ('震级'

模拟同轴电缆的效果

连接到制作的八木天线的同轴电缆为RG-58/U,特性阻抗为50 Ω 。创建使用RF工具箱此同轴电缆的模型。

out_radius = 3.51 e - 3;in_radius = 0.91 e - 3;eps_r = 2.95;line_length = 5.05 *λ;coax_cable = rfckt.coaxial;coax_cable。OuterRadius = out_radius;coax_cable。InnerRadius = in_radius;coax_cable。EpsilonR = eps_r; coax_cable.LossTangent = 2e-4; coax_cable.LineLength = line_length;

分析用于操作的频率范围的同轴电缆,并使用Yagi的阻抗作为负载。计算同轴电缆和Yagi天线的输入VSWR。

Zyagi =阻抗(yagidesign,FREQ);分析(Coax_cable,Freq,Zyagi);图Hline = plot(coax_cable,“VSWRin”“没有”);线。线宽= 2;持有绘图(VSWR_Measured(:,1),VSWR_Measured(:,2),“k -”。) 传奇(“分析”“测量”)标题(同轴电缆模型的驻波比比较

同轴天线和八木天线组合的驻波比分析曲线与实测数据比较良好。

优化设计的结果比较有利地与制造的天线比较。该天线将作为在145 MHz工作的中继站的一部分。

图yagidesign。倾斜= 90;yagidesign。TiltAxis = [0 1 0];展示(Yagidesign)

%%

也可以看看