« RF Weekly Digest (Google Antigravity(Gemini 3.5 Flash)で作ったOllama経由のgemma4-26B-A4B QAT、DuckDuckGo Searchを使った高周波・RF情報の週刊まとめアプリ)2026/6/14-6/21 | トップページ | 万博記念公園で太陽の塔とミャクミャクを見る。太陽の塔の内部は予約なしでも当日券があったので入ってみる。腕の部分の中がすごかった。expo'70パビリオンにもミャクミャクがいた。 »

2026年6月22日 (月)

高周波エンジニアのためのAI・機械学習入門(GPU編33) MATLAB OnlineのAntenna Toolboxのパッチアンテナ設計機能を使ってモンテカルロシミュレーションをして、サロゲートモデルのためのデータを作る。MATLAB Copilotにほとんどコードは書いてもらった。

Interface誌でMATLAB Onlineの6か月ライセンスがついていて、あまり使ってなかったのでアンテナの例で実験しよう。

やりたいことはAntenna Toolboxにはdesign関数があってプロトタイプの寸法が自動で入るので、これでモンテカルロシミュレーションをして機械学習のためのデータを作ろう。いわゆるサロゲートモデル(MATLABのライセンスが切れてもPythonで動くような)を作りたい。

コードはMATLAB Copilotで作ってもらって、修正をかける感じ。

Matlabmldesign01

コード


monteCarloPatchMicrostrip([6, 12],[2.2 4.4], 10000,'patch_mc.csv')

function monteCarloPatchMicrostrip(freqRangeGHz, epsrRange, N, csvFilename)
% monteCarloPatchMicrostrip Generate Monte Carlo dataset of patchMicrostrip designs
%   monteCarloPatchMicrostrip(freqRangeGHz, epsrRange, N, csvFilename)
%
% Inputs:
%   freqRangeGHz  - [f_min f_max] in GHz (e.g. [2.4 2.5])
%   epsrRange     - [epsr_min epsr_max] (relative permittivity)
%   N             - number of Monte Carlo samples (positive integer)
%   csvFilename   - output CSV filename (string)
%
% Output:
%   Writes a CSV file with columns:
%     f_GHz, epsr, h_mm, W_mm, L_mm, feedX_mm, feedY_mm
%
% Notes:
%   - Requires Antenna Toolbox (patchMicrostrip and design).
%   - Frequency is converted to appropriate units internally.
%   - The design uses the 'patchMicrostrip' element and the builtin 'design'
%     function to obtain h, W and L for the given resonant frequency.
%
% Example:
%   monteCarloPatchMicrostrip([2.4 2.5],[2.2 2.3],100,'patch_mc.csv')

arguments
    freqRangeGHz (1,2) double {mustBeFinite, mustBeNonnegative}
    epsrRange (1,2) double {mustBeFinite, mustBePositive}
    N (1,1) double {mustBeInteger, mustBePositive}
    csvFilename (1,:) char
end

% Preallocate results
results = nan(N,7); % f_GHz, epsr, h_mm, W_mm, L_mm, feedX_mm, feedY_mm

rng('shuffle');

for k = 1:N
    % Random sampling (uniform)
    fGHz = rand*(freqRangeGHz(2)-freqRangeGHz(1)) + freqRangeGHz(1);
    epsr = rand*(epsrRange(2)-epsrRange(1)) + epsrRange(1);
   
    % Convert units
    fHz = fGHz*1e9;
   
    % Create dielectric substrate
    substrate = dielectric('Name','mcSubstrate','EpsilonR',epsr);
   
    % Create patchMicrostrip with placeholder W,L; feedOffset set later
    pm = patchMicrostrip('Substrate',substrate);
   
    % Use design to compute patch geometry for the desired resonant frequency

    % design returns tuned element; use copy to extract h,W,L
    pmDesigned = design(pm, fHz);
       
    % Extract dimensions (meters)
    W_m = pmDesigned.Width;
    L_m = pmDesigned.Length;
    h_m = pmDesigned.Height;
    feedX_m = pmDesigned.FeedOffset(1);
    feedY_m = pmDesigned.FeedOffset(2);

    % Patch center is at x=0, y=0 in patchMicrostrip.
    % Convert to mm for output.
    W_mm = W_m*1e3;
    L_mm = L_m*1e3;
    h_mm = h_m*1e3;
    feedX_mm = feedX_m*1e3;
    feedY_mm = feedY_m*1e3;

    results(k,:) = [fGHz, epsr, h_mm, W_mm, L_mm, feedX_mm, feedY_mm];

end

% Write CSV with header
header = {'f_GHz','epsr','h_mm','W_mm','L_mm','feedX_mm','feedY_mm'};
T = array2table(results,'VariableNames',header);
writetable(T, csvFilename);

end

 

できたデータ。

Matlabmldesign02 

これを使ってDNNでサロゲートモデルを作ろう。

« RF Weekly Digest (Google Antigravity(Gemini 3.5 Flash)で作ったOllama経由のgemma4-26B-A4B QAT、DuckDuckGo Searchを使った高周波・RF情報の週刊まとめアプリ)2026/6/14-6/21 | トップページ | 万博記念公園で太陽の塔とミャクミャクを見る。太陽の塔の内部は予約なしでも当日券があったので入ってみる。腕の部分の中がすごかった。expo'70パビリオンにもミャクミャクがいた。 »

パソコン・インターネット」カテゴリの記事

学問・資格」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« RF Weekly Digest (Google Antigravity(Gemini 3.5 Flash)で作ったOllama経由のgemma4-26B-A4B QAT、DuckDuckGo Searchを使った高周波・RF情報の週刊まとめアプリ)2026/6/14-6/21 | トップページ | 万博記念公園で太陽の塔とミャクミャクを見る。太陽の塔の内部は予約なしでも当日券があったので入ってみる。腕の部分の中がすごかった。expo'70パビリオンにもミャクミャクがいた。 »

最近の記事

2026年7月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

最近のコメント

無料ブログはココログ
フォト