メインコンテンツ

getDatasetRef

R2026b

ワーカー実行用の Simulink.sdi.DatasetRef オブジェクトの作成

説明

dsr = getDatasetRef(workerRun) は、Simulink.sdi.WorkerRun オブジェクト workerRun のデータを参照する Simulink.sdi.DatasetRef オブジェクトを返します。

dsr = getDatasetRef(workerRun,domain) は、結果を domain で指定されたスコープに制限します。

例

例

すべて折りたたむ

さまざまな入力フィルターの時定数でモデル ThreeSigs の並列シミュレーションを実行し、シミュレーション データ インスペクターのプログラムによるインターフェイスを使用してさまざまな方法でデータにアクセスします。

設定

シミュレーション データ インスペクターをクリアし、Parallel Computing Toolbox™ のサポートがローカル ワーカーで作成された実行を自動的にインポートするように構成されていることを確認します。次に、各シミュレーションで使用するフィルター パラメーター値のベクトルを作成します。

Simulink.sdi.clear
Simulink.sdi.enablePCTSupport("local")

Ts_vals = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1]; 

並列ワーカーの初期化

並列シミュレーションを実行するローカル ワーカーのプールを未作成の場合は、関数 gcp を使用して作成します。spmd コード ブロックで、ThreeSigs モデルを読み込み、ログする信号を選択します。sim を parfor で使用する際のデータの同時実行の問題を回避するには、シミュレーション中に使用する一時ディレクトリをワーカーごとに作成します。

p = gcp;
spmd
    load_system("ThreeSigs")
    workDir = pwd;
    addpath(workDir)
    tempDir = tempname;
    mkdir(tempDir)
    cd(tempDir)
end

並列シミュレーションの実行

parfor を使用して 7 つのシミュレーションを並列実行します。各シミュレーションの Ts の値を選択し、モデル ワークスペースで Ts の値を変更します。次に、シミュレーションを実行し、Simulink.sdi.WorkerRun オブジェクトの配列を作成して、シミュレーション データ インスペクターでデータにアクセスします。parfor ループの後、別の spmd セグメントを使用して一時ディレクトリをワーカーから削除します。

parfor index = 1:7
    % Select value for Ts
    Ts_val = Ts_vals(index);
    
    % Change the filter time constant and simulate
    modelWorkspace = get_param("ThreeSigs","modelworkspace");
    assignin(modelWorkspace,"Ts",Ts_val)
    sim("ThreeSigs");
    
    % Create a worker run for each simulation
    workerRun(index) = Simulink.sdi.WorkerRun.getLatest
end

spmd        
    % Remove temporary directories
    cd(workDir)
    rmdir(tempDir,"s")
    rmpath(workDir)
end

並列シミュレーション出力から Dataset オブジェクトを取得

関数 getDataset で WorkerRun オブジェクトから Dataset オブジェクトにデータを格納することで、簡単に後処理できるようになります。

ds(7) = Simulink.SimulationData.Dataset;

for a = 1:7
    ds(a) = getDataset(workerRun(a));
end
ds(1)
ans = 
Simulink.SimulationData.Dataset '' with 3 elements

                         Name      BlockPath      
                         ________  ______________ 
    1  [1x1 Signal]      sineSig   ThreeSigs/Out1
    2  [1x1 Signal]      randSig   ThreeSigs/Out2
    3  [1x1 Signal]      chirpSig  ThreeSigs/Out3

  - Use braces { } to access, modify, or add elements using index.

並列シミュレーション出力から DatasetRef オブジェクトを取得

ビッグ データのワークフローの場合は、関数 getDatasetRef を使用して WorkerRun に関連付けられているデータを参照します。

for b = 1:7
    datasetRef(b) = getDatasetRef(workerRun(b));
end
datasetRef(1)
ans = 
  DatasetRef with properties:

           Name: 'Run <run_index>: <model_name>'
            Run: [1×1 Simulink.sdi.Run]
    numElements: 3

シミュレーション データ インスペクターで並列シミュレーション データを処理

ローカルの Simulink.sdi.Run オブジェクトを作成し、シミュレーション データ インスペクターのプログラムによるインターフェイスを使用してデータの解析と可視化を行うこともできます。この例では、各実行に対するフィルター時定数値を示すタグを示します。

for c = 1:7
    Runs(c) = getLocalRun(workerRun(c));
    Ts_val_str = num2str(Ts_vals(c));
    desc = strcat("Ts = ", Ts_val_str);
    Runs(c).Description = desc;
    Runs(c).Name = strcat("ThreeSignals run Ts=", Ts_val_str);    
end

ワーカー リポジトリをクリーンアップ

ワーカーが使用したファイルをクリーンアップし、ワーカー プールで実行するその他のシミュレーション用にディスク容量を解放します。

Simulink.sdi.cleanupWorkerResources

入力引数

すべて折りたたむ

ワーカー実行。Simulink.sdi.WorkerRun オブジェクトとして指定します。

返す Simulink.sdi.WorkerRun オブジェクト内のデータのスコープ。次のオプションのいずれかとして指定します。

  • "signals" — 信号のログによって生成された信号

  • "outports" — 最上位の Outport ブロックで表されたモデル出力信号

  • "dsm" — Data Store Memory ブロック

  • "state" — Simulink® の状態

  • "param" — ダッシュボード ブロックを使用して調整されたブロック パラメーターと変数のパラメーター データ

  • "sf_data" — Stateflow® ローカル データ

  • "sf_state" — Stateflow の状態

  • "sf_state_child" — Stateflow の子アクティビティ

  • "sf_state_leaf" — Stateflow のリーフ アクティビティ

  • "slt_verify" — Simulink Test™ での Assertion ブロックおよび検証評価

出力引数

すべて折りたたむ

実行データへの参照。Parallel Computing Toolbox™ ワーカー実行内のデータを参照する Simulink.sdi.DatasetRef オブジェクトとして指定します。

バージョン履歴

R2017b で導入