メインコンテンツ

From Workspace

R2026b

ワークスペースから Simulink モデルへの信号データの読み込み

  • From Workspace block

ライブラリ:
Simulink / Sources

説明

From Workspace ブロックは、ワークスペースから Simulink® モデルに対してデータを読み取り、そのデータをブロック出力で信号または非バーチャル バスとして提供します。データはベース ワークスペース、モデル ワークスペース、またはマスク ワークスペースから読み込むことができます。From Workspace ブロックを使用して、参照モデルまたはサブシステムにアクセスできるワークスペースからモデルの階層構造内の任意のモデルまたはサブシステムに信号データを読み込むことができます。

サンプルの出力周期、内挿および外挿動作、ゼロクロッシング検出を使用するかどうかを含む、ブロックでワークスペース データから出力を構成する方法を指定できます。

From Workspace ブロック アイコンは [データ] パラメーターの値を表示します。たとえば、From Workspace ブロックを使用してデータを変数 x に読み込む場合、x を [データ] パラメーターの値として指定すると、ブロックが x を表示します。

読み込むデータの指定

From Workspace ブロックの読み込むデータは [データ] パラメーターを使用して指定します。変数名などの [データ] パラメーターの値は MATLAB® 式として指定できます。[データ] パラメーター内の式は、From Workspace ブロックがサポートする形式のデータとして評価されなければなりません。式がどのように評価されるかの詳細については、記号の解釈を参照してください。

From Workspace ブロックはデータ ディクショナリからデータを読み込みません。データ ディクショナリを使用して、シミュレーションの入力データではなく、モデルの設計データのみを保存します。[サンプル時間] パラメーターの値など、From Workspace ブロックに関連する設計データをデータ ディクショナリに保存できます。

例

すべて展開する

この例では、MATLAB ワークスペースから 2 次元構造体を読み取る方法を示します。モデルを開くと、次のコードが PreLoadFcn コールバックで実行されます。

t1 = 0.2 * [0:49]';
m = magic(10);
M = repmat(m,[1 1 length(t1)]);
data.time=t1;
data.signals.values = M;
data.signals.dimensions=[10 10];

このコードでは、関数 magic を使用して、10 行 10 列の行列 (2 次元信号) を作成し、時間ベクトルを追加することにより 3 次元行列を作成します。時間ベクトルは列ベクトルでなければなりません。signals.values フィールドは 3 次元行列で、3 番目の次元は時間に対応します。signals.dimensions フィールドは 2 要素のベクトルです。最初の要素は signals.values フィールドの行数、2 番目の要素は列数です。

モデルを実行すると、From Workspace ブロックはワークスペースから構造体 data を読み取ります。

拡張例

端子

出力

すべて展開する

ワークスペースから読み込まれたデータ。ブロック出力で信号または非バーチャル バスとして提供されます。読み込むデータに応じて、出力信号は次のようになります。

  • スカラー、ベクトル、多次元、または制限付き可変サイズ信号

  • バス

  • バス配列

From Workspace ブロックは、すべての組み込み数値データ型とカスタム固定小数点データ型の実数データおよび複素数データの読み込みをサポートします。以下も読み込むことができます。

  • String データ

  • カスタムのバス データ型をもつデータ

  • ノーマル モードとアクセラレータ モードのシミュレーションにおけるカスタムの列挙データ型をもつデータ

From Workspace ブロックでは、ラピッド アクセラレータ シミュレーションでの列挙データの読み込みはサポートされません。

R2024b より前: From Workspace ブロックで int64 データ型または uint64 データ型をもつ入力信号値の読み込みはサポートされていません。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus
複素数のサポート: あり

パラメーター

すべて展開する

ワークスペースから読み込むデータ。MATLAB 変数、または From Workspace ブロックによってサポートされている形式のデータとして評価される MATLAB 式として指定します。この式では、From Workspace ブロックが出力で提供するデータを作成したり、あるいは読み込むデータが含まれるワークスペース変数を参照したりすることができます。式の評価方法の詳細については、記号の解釈を参照してください。

From Workspace ブロックは、スカラー、多次元、可変サイズの信号の実数または複素数のデータ、さらにバスまたはバス配列のデータについて、複数の形式での入力データの読み込みをサポートします。すべての出力のタイプとデータ形式で、以下のとおりです。

  • 入力データの時間値は単調増加する必要があり、double データ型でなければならず、Inf 値または NaN 値が含まれていてはなりません。

  • R2026a より前: データ値に Inf 値または NaN 値が含まれていてはなりません。

この表では、From Workspace ブロックが生成できる各出力タイプについて、外部入力データを読み込む際のヒントを示すとともに、サポートされる形式をまとめています。例については、From Workspace ブロックを使用したデータの読み込みを参照してください。

出力のタイプデータ形式ヒント

スカラーまたはベクトル信号

  • 単一の列を含む timetable

  • timeseries オブジェクト

  • Simulink.SimulationData.Signal オブジェクト

  • [構造体] または [時間付き構造体] ログ形式に一致するフィールドと階層を持つ構造体

  • 最初の列が時間で、1 つ以上の追加列に各タイムスタンプの信号値が含まれている 2 次元配列

  • スカラーおよびベクトルの信号では、信号データの行数が時間ベクトルの行数に一致している必要があります。

  • timetable を作成するには、時間値が duration ベクトルでなければなりません。

    シミュレーション時間では常に秒単位が使用されます。秒以外の単位を使用する duration ベクトルを作成すると、ソフトウェアによってシミュレーションで使用するために値が秒に変換されます。

  • 配列形式では、複素数である信号値または double 以外のデータ型をもつ信号値はサポートされていません。

多次元信号

  • timeseries オブジェクト

  • 単一の列を含む timetable

  • Simulink.SimulationData.Signal オブジェクト

  • [構造体] または [時間付き構造体] ログ形式に一致するフィールドと階層を持つ構造体

  • 2 次元以上の値をもつ多次元信号の場合、最後の次元の長さは時間ベクトルの長さと一致しなければなりません。

    たとえば、2 行 2 列の行列の信号からなる 10 個のサンプルの入力データでは、時間ベクトルは 10 行で、信号値の配列の次元は 2×2×10 になります。

  • timetable を作成するには、時間値が duration ベクトルでなければなりません。

    シミュレーション時間では常に秒単位が使用されます。秒以外の単位を使用する duration ベクトルを作成すると、ソフトウェアによってシミュレーションで使用するために値が秒に変換されます。

可変サイズの信号

[構造体] または [時間付き構造体] ログ形式に一致するフィールドと階層を持つ構造体

From Workspace ブロックを使用して読み込むことのできる形式で可変サイズの信号を記録するには、信号を最上位の Outport ブロックに接続し、モデルの [保存形式] コンフィギュレーション パラメーターを [構造体] または [時間付き構造体] に設定します。

バス

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

  • バスを定義する Simulink.Bus オブジェクトとして [出力データ型] パラメーターを指定します。

  • 構造体の階層およびフィールド名はバスの階層および要素名と一致していなければなりません。

  • 各 timetable または timeseries オブジェクトには、バス内のリーフ信号のデータが含まれます。

  • 各 timetable には 1 列だけ含まれている必要があります。

バスの入力データを部分的に指定するには、入力データ構造体で、データを読み込む必要がないバス要素を [] に設定します。

バス配列

それぞれがバス配列内のバスのデータを表す構造体の配列
  • ラピッド アクセラレータ シミュレーションでは、バス配列データの読み込みはサポートされていません。

  • 最上位モデルの From Workspace ブロックでは、ノーマル モードおよびアクセラレータ モードのシミュレーションにおけるバス配列データの読み込みがサポートされています。

  • 参照モデルの From Workspace ブロックでは、参照モデルがノーマル モードで実行されている場合にのみ、バス配列データの読み込みがサポートされています。

  • バス配列の入力データを部分的に指定するには、そのバスのデータを表す構造体で、データを読み込む必要がないバス要素を [] に設定します。

このパラメーターの調整では、ラピッド アクセラレータ シミュレーションのターゲットをリビルドする必要はありません。また、Simulink Compiler™ を使用してデプロイされたアプリケーションでサポートされます。 (R2026a 以降)

ラピッド アクセラレータ シミュレーションのターゲットをリビルドせずにこのパラメーターを調整するには、次のようにします。

  1. パラメーター値を変数として定義します。

  2. Simulink.SimulationInput または Simulation オブジェクトを作成してシミュレーションを構成します。

  3. setVariable 関数を使用して、シミュレーション間でパラメーター値を調整します。

次の要件と制限が適用されます。

  • 調整する値は、シミュレーション ターゲットのビルドに使用したパラメーターの値と同じ形式、数値データ型、実数/複素数、次元でなければなりません。

  • [データ] パラメーターの定義に使用する変数は、モデル内の他のパラメーターを定義してはなりません。

  • バスまたはバス配列用の入力データの調整はサポートされていません。

  • [データ] パラメーターの調整は、参照モデル内の From Workspace ブロックではサポートされていません。

ヒント

  • To File ブロックを使用して配列形式に記録されたデータを読み込むには、時間値が 1 行ではなく 1 列になるように配列を転置します。配列を転置するには、transpose 関数を使用します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: VariableName
値: 'simin' (既定値) | MATLAB expression | timeseries object | timetable | structure | 2-D array
データ型: char | string

例: set_param("myModel/From Workspace",VariableName="inData") configures the From Workspace block named From Workspace in the model myModel to load data stored in the MATLAB variable named inData.

From Workspace ブロックが読み込むワークスペース データのデータ型。既定では、From Workspace ブロックはワークスペース データ、または信号のデータ型を定義する下流のブロックから出力信号のデータ型を継承します。

ヒント

  • スカラー、ベクトル、または多次元信号のデータを読み込むときに、出力データ型を継承することを選択するか、ワークスペース データのデータ型に一致するように出力データ型を指定することができます。

  • バスまたはバス配列のデータを読み込むには、[出力データ型] を Bus: <bus_object> に設定し、出力バスを定義する Simulink.Bus オブジェクトの名前を指定します。

    列挙型データを読み込むときは、[出力データ型] を Enum: <class_name> に設定し、列挙型データ値を定義する列挙型クラスの名前を指定します。

  • データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、the Show data type assistant button をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: OutDataTypeStr
値: 'Inherit: auto' (既定値) | "double" | "single" | "half" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "int64" | "uint64" | "boolean" | "string" | "fixdt(1,16,0)" | "fixdt(1,16,2^0,0)" | "Enum: <class name>" | "Bus: <object name>" | data type expression
データ型: char | string

例: set_param("myModel/From Workspace",OutDataTypeStr="int32")

[サンプル時間] パラメーターは、シミュレーション中にブロックが新しい出力値をいつ計算するかを指定します。詳細については、サンプル時間の指定を参照してください。

出力に時間オフセットをもたせない場合は、[サンプル時間] パラメーターをスカラーとして指定します。出力に時間オフセットを追加する場合は、[サンプル時間] パラメーターを、最初の要素がサンプリング周期、2 番目の要素がオフセットである 1 行 2 列のベクトルとして指定します。

既定では、[サンプル時間] パラメーターの値は 0 で、これは時間オフセットのない連続サンプル時間を示します。離散信号の場合は、[サンプル時間] を離散サンプリング間隔として指定します。たとえば、[サンプル時間] として 0.1 を指定して、100 ミリ秒ごとにサンプリングされる離散信号をモデル化します。値を継承するには、[サンプル時間] として -1 を指定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: SampleTime
値: '0' (既定値) | scalar | vector
データ型: char | string

例: set_param("myModel/From Workspace",SampleTime="0.1")

内挿法は、読み込まれたワークスペース データにおいて、時間値の間にあるシミュレーション時間に対して出力値を提供するために使用されます。[データを内挿する] を選択すると、From Workspace ブロックは、読み込まれたワークスペース データ内の隣接する値を使用して出力値を線形内挿します。[データを内挿する] が選択されていない場合、From Workspace ブロックは、読み込まれたワークスペース データ内の前のデータ点の値を提供します。内挿アルゴリズムの詳細については、内挿を参照してください。

[データを内挿する] パラメーターと [最後のデータ後の出力フォーム] パラメーターは、読み込まれたワークスペース データにおいて、From Workspace ブロックが最初のデータ点の前または最後のデータ点の後のシミュレーション時間に対して出力値を外挿する方法を制御します。From Workspace ブロックの外挿動作に関する詳細については、外挿を参照してください。

以下の場合は、[データを内挿する] パラメーターをクリアし、[最後のデータ後の出力フォーム] パラメーターを [外挿] 以外の値に設定します。

  • string、列挙、固定小数点、または可変サイズの信号データを読み込む。

  • ラピッド アクセラレータ シミュレーション用に int64 または uint64 のデータを読み込む。

  • ノーマル モード以外のモードでシミュレーションを実行するように構成されたモデル参照内で、From Workspace ブロックを使用して int64 または uint64 のデータを読み込む。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: Interpolate
値: 'on' (既定値) | "off"
データ型: char | string

例: set_param("myModel/From Workspace",Interpolate="off")

ゼロクロッシング検出とは、ブロック出力内の不連続点を特定したり、不連続点近くでの過度に小さいタイム ステップの使用を回避してシミュレーションの低速化を防ぐために用いられる手法です。"ゼロクロッシング" とはデータ内の不連続点のことです。From Workspace ブロックでは、サンプル時間が連続 (0) の場合にゼロクロッシングを検出できます。

データに同じ時間を持つ複数のサンプルが含まれている場合に、読み込まれたワークスペース データによってブロック出力内の不連続点が作成されます。たとえば、次の入力データの場合、不連続点は時間 2 で発生します。

time:     0 1 2 2 3
signal:   2 3 4 5 6

From Workspace ブロックは、[内挿] パラメーターを選択した場合にのみ、入力データ内の重複時間値によって生じるゼロクロッシングを検出します。

また、[最後のデータ後の出力フォーム] を [0 に設定] に設定すると、From Workspace ブロックはワークスペース データ内の最後のサンプルで出力内の不連続点を作成できます。

バスの入力データを読み込むときに、From Workspace ブロックはすべてのバス要素のゼロクロッシングを検出します。

このブロックでは、可変ステップ ソルバーを使用するシミュレーションでのみゼロクロッシング検出がサポートされます。シミュレーションに固定ステップ ソルバーを使用する場合、このブロックに対してゼロクロッシングの検出や特定は行われません。

詳細については、ゼロクロッシング検出を参照してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: ZeroCross
値: 'on' (既定値) | "off"
データ型: char | string

例: set_param("myModel/From Workspace",ZeroCross="off")

From Workspace ブロックは [データを内挿する] 設定と [最後のデータ後の出力フォーム] 設定を使用して、ワークスペース データで使用可能な最後のサンプル後のシミュレーション時間に対するブロック出力を決定します。

[最後のデータ後の出力フォーム] の設定[データを内挿する] の設定最終データの後のブロック出力

外挿

オン

最終データ値から外挿

オフ

エラー

0 に設定

オン

0

オフ

最終値を保持

オン

ワークスペースからの最終値

オフ

周期的に繰り返す

オン

エラー

オフ

読み込まれたワークスペース データが時間なしの構造体形式を使用する場合、ワークスペース データを最初の値から繰り返します。

時間付き構造体以外のワークスペース データ形式の場合はエラーになります。

From Workspace ブロックの外挿動作に関する詳細については、外挿を参照してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: OutputAfterFinalValue
値: 'Extrapolation' (既定値) | "Setting to zero" | "Holding final value" | "Cyclic repetition"
データ型: char | string

例: set_param("myModel/From Workspace",OutputAfterFinalValue="Holding final value")

ブロックの特性

データ型

Boolean | bus | double | enumerated | fixed pointa | half | integer | single | string

直達

いいえ

多次元信号

はい

可変サイズの信号

はい

ゼロクロッシング検出

はい

a Fixed-Point Designer を使って作成された fi オブジェクトによる入力をサポートします。

アルゴリズム

すべて展開する

拡張機能

すべて展開する

バージョン履歴

R2006a より前に導入

すべて展開する