主要内容

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

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

设计参数

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

fc = 144.5 e6;wirediameter = 12 e - 3;c = physconst (“光速”);λ= 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 *(λ/ 2);d.Width = cylinder2strip (wirediameter / 2);d.Tilt = 90;d.TiltAxis =“Y”

用激振器作为偶极子创建八木天线。设置董事数为4个。元素的长度和元素之间的间距的选择是一个初始的猜测,将作为优化过程的起点。展示初步设计。

Numdirs = 4;refLength = 0.25;dirLength = [0.940 0.910 0.850 0.830];refSpacing = 0.35;dirSpacing = [0.15 0.2 0.3 0.3];initialdesign = [refength refSpacing dirSpacing].*lambda;yagidesign = yagiUda;yagidesign。励磁机= d;yagidesign。NumDirectors = Numdirs; yagidesign.ReflectorLength = refLength; yagidesign.DirectorLength = dirLength; yagidesign.ReflectorSpacing = refSpacing*lambda; yagidesign.DirectorSpacing = dirSpacing*lambda; show(yagidesign)

在设计频率绘制辐射图

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

模式(yagidesign、fc);

这个最初的八木- uda天线在首选方向没有更高的方向性,意味着在天顶(仰角= 90度),因此是一个设计糟糕的散热器。

设置优化

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

  • 反射器长度(1个变量)

  • 反射器间距(1个变量)

  • 导演间距(4个变量)

用一个矢量参数表示controlVals,设置

  • 反射器长度=controlVals (1)

  • 反射器间距=controlVals (2)

  • 导演间距=controlVals(三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];指向器间距的上限exciterLengthBounds = (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];主瓣和后瓣的方位角、仰角%

基于代理的优化

全局优化工具箱™提供了一个名为代理.属性指定的选项使用此函数optimoptions函数。在每一次迭代中,绘制目标函数的最佳值,并限制总迭代次数为300次。通过使用匿名函数以及边界和选项结构,将目标函数传递给代理函数。优化过程中所使用的目标函数代理是否可在文件中找到yagi_objective_function

%优化器选择优化器=“代孕”如果strcmpi(优化器,“PatternSearch”) optimizerparams = optimoptions(@patternsearch);optimizerparams。UseCompletePoll = true;optimizerparams。PlotFcns = @psplotbestf;optimizerparams。UseParallel = true;optimizerparams。缓存=“上”;optimizerparams。MaxFunctionEvaluations = 1200;optimizerparams。FunctionTolerance = 1飞行;elseifstrcmpi(优化器,“代孕”) optimizerparams = optimoptions(@surrogateopt);optimizerparams。UseParallel = true;optimizerparams。MaxFunctionEvaluations = 600;optimizerparams。MinSurrogatePoints = 12;optimizerparams。InitialPoints = initialdesign;其他的错误(优化器不支持的金宝app);结束天线设计参数designparams。天线= yagidesign;designparams。边界= 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 = patternElevation (yagidesign fL 0,“高度”, 0:1:359);DE_fU = patternElevation (yagidesign赋0,“高度”, 0:1:359);添加(pE、[DE_fL DE_fU])体育。magnitelim = [-20 15];体育。TitleTop =“E-plane方向性(dBi)”;体育。LegendLabels = {[num2str (fc. / 1 e6),“兆赫”]、[num2str(液体/ 1 e6),“兆赫”]、[num2str (fU. / 1 e6),“兆赫”]};

图;patternElevation (yagidesign fc 90,“高度”, 0:1:359);pH = polarpattern (“gco”);90年,佛罗里达州DH_fL = patternElevation (yagidesign的“高度”, 0:1:359);90年DH_fU =模式(yagidesign,傅,“高度”, 0:1:359);add(pH,[DH_fL, DH_fU]) pH. magnitelim = [-20 15];pH.TitleTop =“h面方向(dBi) ';pH.LegendLabels = {[num2str (fc. / 1 e6),“兆赫”]、[num2str(液体/ 1 e6),“兆赫”]、[num2str (fU. / 1 e6),“兆赫”]};

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

优化天线的输入反射系数

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

s = sparameters (yagidesign,频率,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);图电压驻波比(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;

在工作频率范围内分析同轴电缆,并使用八木的阻抗作为负载。计算同轴电缆和八木天线的输入驻波比。

Zyagi =阻抗(yagidesign、频率);分析(coax_cable频率,Zyagi);图hline = plot(coax_cable,“VSWRin”“没有”);线。线宽= 2;持有情节(vswr_measured (: 1) vswr_measured (:, 2),“k -”。)传说(“分析”“测量”)标题(同轴电缆模型的驻波比比较

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

优化设计的结果与实际制作的天线相当。该天线将作为工作在145兆赫兹的中继站的一部分。

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

%%

另请参阅