Main Content

From Workspace ブロックを使用したデータの読み込み

From Workspace ブロックで信号データを読み込むには、次を行います。

  1. 読み込む信号データを含むワークスペース変数を作成します。

  2. From Workspace ブロックをモデルに追加します。From Workspace ブロックを、From Workspace ブロックが入力を提供するブロックに接続します。

  3. From Workspace ブロックをダブルクリックし、次を設定します。

    • 読み込むワークスペース データ

    • From Workspace ブロックの出力のデータ形式

    • サンプル時間、欠損データ点のデータの処理方法、ゼロクロッシング検出を使用するかどうかを含む、データの読み込み方法

    ワークスペースが T という時間の列ベクトルと、それに対応する U という信号値の列ベクトルを含んでいるとします。[データ] パラメーターに式 [T U] を入力すると、必要な入力配列が得られます。必要な配列または構造体がワークスペースに存在する場合は、[データ] パラメーターに構造体または行列の名前を入力します。

From Workspace ブロックを使用してワークスペース データを読み込む他に、データをルートレベルの入力端子に読み込む方法があります。詳細については、ルートレベルの入力端子を参照してください。

ワークスペース データの指定

From Workspace ブロックをダブルクリックし、[データ] パラメーターで、読み込むワークスペース データを指定します。以下のいずれかに評価される MATLAB® 式 (MATLAB ワークスペースの変数の名前など) を指定します。

  • timeseries または timetable オブジェクト

    double 型の実数信号は、From Workspace ブロックがサポートする任意の形式にできます。double 以外のデータ型の複素数信号と実数信号には、Array 以外の任意の形式を使用します。

  • timeseries または timetable オブジェクトの構造体

    バス データには timeseries または timetable オブジェクトの構造体を使用します。バス階層に一致させて、バス内のリーフ信号ごとに timeseries または timetable オブジェクトを指定します。バス信号をルートレベルの Inport ブロックに読み込む場合と同じ方法でデータを設定します。詳細については、ルート レベルの入力端子へのバス データの読み込みを参照してください。

  • 時間付きまたは時間なしの構造体

    詳細については、From Workspace ブロックの構造体データの指定を参照してください。

  • 2 次元行列

    行列を使用して指定できるのは 1 次元信号のみです。各行列の行の最初の要素はタイムスタンプです。各行の残りは、信号値のスカラーまたはベクトルです。

メモ

読み込む timetable データを指定するとき、timetable オブジェクトにはそれぞれ 1 つの信号のみのデータを含むことができます。

From Workspace ブロックの構造体データの指定

時間値の有無にかかわらず 1 次元信号または多次元信号に構造体を使用できます。構造体には、次の形式を使用します。

  • 信号値の列ベクトルを格納する signals.values フィールド。

  • 信号の次元を格納する配列 signals.dimensions (オプション)。

  • タイムスタンプの列ベクトルである、double の time ベクトル (オプション)。

    n 番目の time 要素は、n 番目の signals.values 要素のタイムスタンプです。

使用する構造体の形式は、以下のどのデータをインポートしているかによって異なります。

  • 離散信号 (信号が時間の等間隔値で定義されている) — 空の時間ベクトルをもつ構造体を使用します。

  • 連続信号 (信号が時間のすべての値に定義されている) — データが滑らかな曲線を表すか、データの範囲全体にわたって不連続 (ジャンプする) かによって、方法が異なります。

以下の例を参照してください。

離散信号と連続信号の両方で、サブ構造体の配列を含む signals フィールドを指定し、サブ構造体はそれぞれモデル入力端子に対応しています。

signals サブ構造体には、次の 2 つのフィールドがなければなりません。values および dimensions

  • values フィールドには、対応する入力端子用の入力の配列を含まなければなりません。時間ベクトルを指定する場合、各入力は time フィールドで指定した時間値に対応しなければなりません。

    端子の入力がスカラー値またはベクトル値である場合、values フィールドは M-by-N 配列でなければなりません。時間ベクトルを指定する場合、Mtime フィールドで指定される時間点の数値でなければならず、N は各ベクトル値の長さです。

    端子の入力が行列 (2 次元配列) の場合、values フィールドは、M x N x T の配列でなければなりません。MN は各行列入力の次元であり、T は時間点の数です。4 行 5 列の行列信号の 51 個の時間サンプルをモデルの入力端子の 1 つに入力するとします。このとき、ワークスペース構造体の対応する dimensions フィールドは、[4 5] に等しくなり、values 配列の次元は 4 × 5 × 51 になります。

  • dimensions フィールドは、入力の次元を指定します。各入力がスカラーまたはベクトル (1 次元配列) 値である場合、dimensions フィールドは、ベクトルの長さ (1 スカラーに対して 1) を指定するスカラー値になります。各入力が行列 (2 次元配列) である場合、dimensions フィールドは 2 要素ベクトルになり、1 番目の要素は行列の行数を指定し、2 番目の要素は列数を指定します。

連続信号の場合、時間ベクトルを含む time フィールドを指定できます。時間値を指定する方法は、必要な信号データの種類によって異なります。

MATLAB 構造体の定義の詳細については、構造体配列の作成を参照してください。

信号データ時間データの推奨値

等間隔離散信号

次の形式の式を使用します。

timeVector = timeStep * [startTime:numSteps-1]' 

ベクトルは転置されます。開始時間はタイム ステップであるため、必要なステップ数から 1 を引いた数を指定する必要があります。たとえば、0.2 のタイム ステップで 50 個の時間値を指定するには、次のようにします。

T1 = 0.2 * [0:49]' 

メモ

次の形式の式を使用 "しないで" ください。

timeVector = [startTime:timeStep:endTime]' 

たとえば、次は使用しないでください。

T2 = [0:0.2:10]' 

コンピューターによって使用される倍精度の丸めのため、この時間ベクトルの形式は、タイム ステップで乗算される形式 (T1) とは等しくありません。Simulink® は倍精度の丸めのない正確な値を必要とします。T2 の形式を使用すると、予期しないシミュレーション結果が得られる場合があります。

等間隔ではない値

有効な MATLAB 配列式を使用します。たとえば、[1:5 5:10](1 6 10 15) などです。

From Workspace ブロック、From File ブロック、Signal Editor ブロックはゼロクロッシング検出をサポートしています。ルートレベルの入力端子がこれらのブロックのいずれかに接続されている場合、重複した時間エントリを使用してゼロクロッシング時間を指定できます。

時間ベクトルを指定しない構造体を読み込む場合は、次を行います。

  1. [サンプル時間 (継承は -1)]0 (連続) 以外の値に設定します。

  2. [データを内挿する] をオフにします。

  3. [最後のデータ後の出力フォーム][外挿] 以外の値に設定します。

To File ブロックからのデータの使用

以前のシミュレーションで To Workspace ブロックがエクスポートしたデータを、後のシミュレーションで使用するために読み込むには、From Workspace ブロックを使用できます。[時系列] または [時間付き構造体] 形式のいずれかで To Workspace ブロック データを保存します。MATLAB timeseries を使用して To File ブロックによってファイルにエクスポートされたデータの読み込む場合、データの変更は必要ありません。

To File ブロックの [保存形式] パラメーターを [配列] に設定すると、エクスポートされた配列データが転置されます。To File ブロックによって保存されたデータでは、連続するタイムスタンプが列に格納され、その後に対応するデータが続きます。転置されたデータでは、連続するタイムスタンプが行に格納され、その後に対応するデータが続きます。必要な形式を提供するには、MATLAB load コマンドと transpose コマンドを MAT ファイルと共に使用します。再度データが転置されないように、転置したデータを再度保存します。

データセット データの読み込み

Simulink.SimulationData.Dataset 形式のワークスペース データを使用するには、Dataset オブジェクトから timeseries または timetable オブジェクトを抽出します。たとえば、Dataset 形式の信号のログを使用していて、既定の出力変数 logsout を使用している場合、以下を入力して 1 つのログ信号を取得します。

logsout.get(1).values

可変サイズの信号の指定

To Workspace ブロック ([構造体] または [時間付き構造体] 形式のもの) またはルート Outport ブロックを使用すると、可変サイズの信号をログに記録できます。次に、To Workspace 変数を From Workspace ブロックと共に使用します。

あるいは、可変サイズの信号データを含む MATLAB 構造体を作成します。構造体の各 values フィールドに対して、信号用のランタイム次元を指定する valueDimensions フィールドを含めます。詳細については、可変サイズの信号を使用する Simulink モデルを参照してください。

データ ディクショナリにリンクされたモデルのデータの保存

データ ディクショナリにリンクされたモデル内の From Workspace ブロックを使用する場合、ブロックが参照するデータの保存場所を選択しなければなりません。読み込むターゲット データが含まれるワークスペースまたはディクショナリに基づいて [データ] パラメーターの値を設定します。詳細については、From Workspace ブロックを使用したデータの読み込みを参照してください。

サンプル時間

From Workspace ブロックの [サンプル時間] パラメーターは、ワークスペースからデータを読み込むためのサンプル時間を指定します。ワークスペース データ内のタイムスタンプは単調非減少でなければなりません。詳細については、サンプル時間の指定を参照してください。

欠損データ値の内挿

ワークスペースによってデータが供給される時間ヒットの間に発生する時間ヒットのデータ値を計算するために、線形ラグランジュ内挿を使用するには、[データを内挿する] をオンにします。

可変サイズの信号の場合は、[データを内挿する] をオフにします。

最終データの後の出力の指定

ワークスペース データが入手可能な最後の時間ヒット後のブロック出力を決定するには、以下のパラメーターの設定を組み合わせます。

  • データを内挿する

  • 最後のデータ後の出力フォーム

From Workspace ブロックのドキュメンテーションで、[最後のデータ後の出力フォーム] パラメーターを参照してください。

ゼロクロッシングの検出

既定では From Workspace ブロックのゼロクロッシング検出は有効ではありません。ゼロクロッシング検出は、過度に小さいタイム ステップを取ることなく、不連続点を特定します。

[ゼロクロッシング検出を有効にする] パラメーターは、サンプル時間が連続する場合 (0) にのみ適用されます。

[ゼロクロッシング検出を有効にする] パラメーターを選択すると、入力配列に同じ時間ヒットのエントリが複数含まれている場合に、Simulink はその時間ヒットのゼロクロッシングを検出します。

バス信号の場合、Simulink はすべてのリーフ バス要素にわたるゼロクロッシングを検出します。

参考

ブロック

関連するトピック