このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
6素子八木宇田アンテナの代理最適化
この例では、サロゲート最適化ソルバーを使用してアンテナ設計を最適化する方法を示します。アンテナの放射パターンは、アンテナの形状を定義するパラメータに大きく依存します。通常、放射パターンの特徴には複数の局所最適値が存在します。放射パターンを計算するために、この例では Antenna Toolbox™ 関数を使用します。
八木宇田アンテナは、商業および軍事分野のさまざまな用途に広く使用されている放射構造です。このアンテナはVHF-UHFの周波数範囲のテレビ信号を受信することができます[1]。八木宇田アンテナは、通常は折り畳みダイポールまたは標準ダイポールである単一の駆動要素を持ち、その周囲に複数の受動ダイポールを備えた指向性進行波アンテナです。受動要素は 反射器 と 導波器 を形成します。これらの名前は、駆動される要素に対する相対的な位置を識別します。反射ダイポールは、駆動要素の後ろ、アンテナ放射のバックローブの方向にあります。ディレクターダイポールは、駆動要素の前にあり、メインビームが形成される方向にあります。
設計パラメータ
初期設計パラメータをVHF帯域の中心に指定します[2]。
freq = 165e6;
wirediameter = 19e-3;
c = physconst("lightspeed");
lambda = c/freq;
八木宇田アンテナの作成
八木宇田アンテナの駆動素子は、このタイプのアンテナの標準的な励振器である折り畳みダイポールです。折り畳みダイポールの長さと幅のパラメータを調整します。円筒構造は等価な金属ストリップとしてモデル化されるため、Antenna Toolbox™ で使用可能な cylinder2strip
ユーティリティ関数を使用して幅を計算します。設計周波数での長さはです。
d = dipoleFolded; d.Length = lambda/2; d.Width = cylinder2strip(wirediameter/2); d.Spacing = d.Length/60;
折り畳みダイポールとして励振器を備えた八木宇田アンテナを作成します。反射器要素と導波器要素の長さを に設定します。ディレクターの数を 4 に設定します。反射鏡と導波器の間隔をそれぞれ と として指定します。これらの設定は初期推測を提供し、最適化手順の開始点として機能します。初期デザインを表示します。
Numdirs = 4; refLength = 0.5; dirLength = 0.5*ones(1,Numdirs); refSpacing = 0.3; dirSpacing = 0.25*ones(1,Numdirs); initialdesign = [refLength dirLength refSpacing dirSpacing].*lambda; yagidesign = yagiUda; yagidesign.Exciter = d; yagidesign.NumDirectors = Numdirs; yagidesign.ReflectorLength = refLength*lambda; yagidesign.DirectorLength = dirLength.*lambda; yagidesign.ReflectorSpacing = refSpacing*lambda; yagidesign.DirectorSpacing = dirSpacing*lambda; show(yagidesign)
設計周波数での放射パターンのプロット
最適化プロセスを実行する前に、初期推定値の放射パターンを 3D でプロットします。
fig1 = figure; pattern(yagidesign,freq);
このアンテナは、天頂(仰角 = 90 度)の優先方向では高い指向性を持ちません。この初期の八木宇田アンテナ設計は、設計が不十分な放射器です。
最適化の設定
最適化の制御変数として次の変数を使用します。
反射鏡の長さ(1変数)
ディレクターの長さ(4つの変数)
反射鏡間隔(1変数)
ディレクターの間隔(4つの変数)
単一のベクトルパラメータ parasiticVals
に関しては、次の設定を使用します。
反射鏡の長さ =
parasiticVals(1)
ディレクターの長さ =
parasiticVals(2:5)
反射鏡間隔 =
parasiticVals(6)
ディレクター間隔 =
parasiticVals(7:10)
parasiticVals
の観点から、90 度方向で大きな値、270 度方向で小さな値、仰角ビーム幅角度境界間の最大電力の値が大きいことを目指す目的関数を設定します。
type yagi_objective_function2.m
function objectivevalue = yagi_objective_function2(y,parasiticVals,freq,elang) % yagi_objective_function2 returns the objective for a 6-element Yagi % objective_value = yagi_objective_function(y,parasiticvals,freq,elang) % assigns the appropriate parasitic dimensions, parasiticvals, to the Yagi % antenna y, and uses the frequency freq and angle pair elang to calculate % the objective function value. % The yagi_objective_function2 function is used for an internal example. % Its behavior might change in subsequent releases, so it should not be % relied upon for programming purposes. % Copyright 2014-2018 The MathWorks, Inc. bw1 = elang(1); bw2 = elang(2); y.ReflectorLength = parasiticVals(1); y.DirectorLength = parasiticVals(2:y.NumDirectors+1); y.ReflectorSpacing = parasiticVals(y.NumDirectors+2); y.DirectorSpacing = parasiticVals(y.NumDirectors+3:end); output = calculate_objectives(y,freq,bw1,bw2); output = output.MaxDirectivity + output.FB; objectivevalue= -output; % To maximize end function output = calculate_objectives(y,freq,bw1,bw2) %calculate_objectives calculate the objective function % output = calculate_objectives(y,freq,bw1,bw2) Calculate the directivity % in az = 90 plane that covers the main beam, sidelobe and backlobe. % Calculate the maximum directivity, sidelobe level and backlobe and store % in fields of the output variable structure. [es,~,el] = pattern(y,freq,90,0:1:270); el1 = el < bw1; el2 = el > bw2; el3 = el>bw1&el<bw2; emainlobe = es(el3); esidelobes =([es(el1);es(el2)]); Dmax = max(emainlobe); SLLmax = max(esidelobes); Backlobe = es(end); F = es(91); B = es(end); F_by_B = F-B; output.MaxDirectivity= Dmax; output.MaxSLL = SLLmax; output.BackLobeLevel = Backlobe; output.FB = F_by_B; end
制御変数に境界を設定します。
refLengthBounds = [0.4; 0.6]; dirLengthBounds = [0.35 0.35 0.35 0.35; % lower bound on director length 0.495 0.495 0.495 0.495]; % upper bound on director length refSpacingBounds = [0.05; % lower bound on reflector spacing 0.30]; % upper bound on reflector spacing dirSpacingBounds = [0.05 0.05 0.05 0.05; % lower bound on director spacing 0.23 0.23 0.23 0.23]; % upper bound on director spacing LB = [refLengthBounds(1) dirLengthBounds(1,:) refSpacingBounds(1) dirSpacingBounds(1,:) ].*lambda; UB = [refLengthBounds(2) dirLengthBounds(2,:) refSpacingBounds(2) dirSpacingBounds(2,:) ].*lambda;
最適化の初期ポイントを設定し、仰角ビーム幅角度の境界を設定します。
parasitic_values = [ yagidesign.ReflectorLength, ... yagidesign.DirectorLength, ... yagidesign.ReflectorSpacing ... yagidesign.DirectorSpacing]; elang = [60 120]; % elevation beamwidth angles at az = 90
代理最適化
目的関数のグローバル最適値を検索するには、ソルバーとして surrogateopt
を使用します。オプションを設定して、500 回の関数評価を許可し、初期点を含め、並列計算を使用し、'surrogateoptplot'
プロット関数を使用します。'surrogateoptplot'
プロットを理解するには、surrogateoptplotを解釈する を参照してください。
surrogateoptions = optimoptions("surrogateopt", MaxFunctionEvaluations=500,... InitialPoints=parasitic_values, UseParallel=canUseGPU(), PlotFcn="surrogateoptplot"); rng(4) % For reproducibility optimdesign = surrogateopt(@(x) yagi_objective_function2(yagidesign,x,freq,elang),... LB,UB,surrogateoptions);
surrogateopt stopped because it exceeded the function evaluation limit set by 'options.MaxFunctionEvaluations'.
surrogateopt
は、目的関数値が -82.5 となるポイントを見つけました。最適化されたパラメータがアンテナの放射パターンに与える影響を調査します。
最適化されたパターンをプロットする
設計周波数で最適化されたアンテナ パターンをプロットします。
yagidesign.ReflectorLength = optimdesign(1); yagidesign.DirectorLength = optimdesign(2:5); yagidesign.ReflectorSpacing = optimdesign(6); yagidesign.DirectorSpacing = optimdesign(7:10); fig2 = figure; pattern(yagidesign,freq)
どうやら、アンテナは天頂で大幅に多くの電力を放射するようになったようです。
E面とH面のパターンカット
2 つの直交平面での動作をより深く理解するには、E 平面と H 平面、つまり方位角がそれぞれ 0 度と 90 度における電界の正規化された大きさをプロットします。
fig3 = figure; pattern(yagidesign,freq,0,0:1:359);
fig4 = figure; pattern(yagidesign,freq,90,0:1:359);
最適化された設計により、放射パターンが大幅に改善されます。天頂に向かって希望の方向に高い指向性を実現します。バックローブが小さいため、このアンテナの前後比は良好です。天頂での指向性、前後比、および E 平面と H 平面のビーム幅を計算します。
D_max = pattern(yagidesign,freq,0,90)
D_max = 9.4799
D_back = pattern(yagidesign,freq,0,-90)
D_back = -63.5385
F_B_ratio = D_max - D_back
F_B_ratio = 73.0184
Eplane_beamwidth = beamwidth(yagidesign,freq,0,1:1:360)
Eplane_beamwidth = 56.0000
Hplane_beamwidth = beamwidth(yagidesign,freq,90,1:1:360)
Hplane_beamwidth = 72
メーカーデータシートとの比較
最適化された八木宇田アンテナは、9.48 dBi の前方指向性を実現し、これは 7.4 dBd (ダイポールを基準) に相当します。この結果は、参考文献[2]のデータシートで報告されているゲイン値(8.5dBd)よりもわずかに低いです。前後比は 73 dB です。これはオプティマイザーが最大化する量の一部です。最適化された八木宇田アンテナの E 平面ビーム幅は 56 度で、これはデータシートと同じです。最適化された八木宇田アンテナの H 面ビーム幅は 72 度ですが、データシートの値は 63 度です。この例では、帯域全体のインピーダンス整合については説明しません。
初期設計と最適化設計の表
初期設計の推測値と最終的な最適化された設計値を表にまとめます。
yagiparam= {'Reflector Length'; 'Director Length - 1'; 'Director Length - 2'; 'Director Length - 3'; 'Director Length - 4'; 'Reflector Spacing'; 'Director Spacing - 1'; 'Director Spacing - 2';'Director Spacing - 3'; 'Director Spacing - 4'}; initialdesign = initialdesign'; optimdesign = optimdesign'; T = table(initialdesign,optimdesign,RowNames=yagiparam)
T=10×2 table
initialdesign optimdesign
_____________ ___________
Reflector Length 0.90846 1.0009
Director Length - 1 0.90846 0.66951
Director Length - 2 0.90846 0.71935
Director Length - 3 0.90846 0.73777
Director Length - 4 0.90846 0.75073
Reflector Spacing 0.54508 0.32285
Director Spacing - 1 0.45423 0.23736
Director Spacing - 2 0.45423 0.090846
Director Spacing - 3 0.45423 0.37511
Director Spacing - 4 0.45423 0.33403
リファレンス
[1] バラニス、コンスタンティンA.アンテナ理論:分析と設計。Fourth edition.ニュージャージー州ホーボーケン:ワイリー、2016年。
[2] オンライン: https://amphenprocom.com/products/base-station-antennas/2450-s-6y-165