From Workspace
ワークスペースから Simulink モデルへの信号データの読み込み
ライブラリ:
Simulink /
Sources
説明
From Workspace ブロックは、ワークスペースから Simulink® モデルに対してデータを読み取り、そのデータをブロック出力で信号または非バーチャル バスとして提供します。データはベース ワークスペース、モデル ワークスペース、またはマスク ワークスペースから読み込むことができます。From Workspace ブロックを使用して、参照モデルまたはサブシステムにアクセスできるワークスペースからモデルの階層構造内の任意のモデルまたはサブシステムに信号データを読み込むことができます。
サンプルの出力周期、内挿および外挿動作、ゼロクロッシング検出を使用するかどうかを含む、ブロックでワークスペース データから出力を構成する方法を指定できます。
From Workspace ブロック アイコンは [データ] パラメーターの値を表示します。たとえば、From Workspace ブロックを使用してデータを変数 x に読み込む場合、x
を [データ] パラメーターの値として指定すると、ブロックが x
を表示します。
読み込むデータの指定
From Workspace ブロックの読み込むデータは [データ] パラメーターを使用して指定します。変数名などの [データ] パラメーターの値は MATLAB® 式として指定できます。[データ] パラメーター内の式は、From Workspace ブロックがサポートする形式のデータとして評価されなければなりません。式がどのように評価されるかの詳細については、記号の解釈を参照してください。
From Workspace ブロックはデータ ディクショナリからデータを読み込みません。データ ディクショナリを使用して、シミュレーションの入力データではなく、モデルの設計データのみを保存します。[サンプル時間] パラメーターの値など、From Workspace ブロックに関連する設計データをデータ ディクショナリに保存できます。
例
ワークスペースからの構造体形式での 2 次元信号の読み取り
この例では、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
を読み取ります。
拡張例
端子
出力
Port_1 — ワークスペースから読み込まれたデータ
スカラー | ベクトル | 行列 | 配列
ワークスペースから読み込まれたデータ。ブロック出力で信号または非バーチャル バスとして提供されます。読み込むデータに応じて、出力信号はスカラー、ベクトル、多次元、または可変サイズの信号、バス、またはバス配列 (R2021a 以降)になる可能性があります。From Workspace ブロックは、int64
および uint64
を除くすべての組み込みデータ型の実数データおよび複素数データの読み込みをサポートします。
データ型: single
| double
| half
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| fixed point
| enumerated
| bus
複素数のサポート: あり
パラメーター
データ — ワークスペースから読み込むデータ
timeseries
オブジェクト | timetable
オブジェクト | 構造体 | 2 次元配列 | MATLAB 式
ワークスペースから読み込むデータ。MATLAB 変数、または From Workspace ブロックによってサポートされている形式のデータとして評価される MATLAB 式として指定します。この式では、From Workspace ブロックが出力で提供するデータを作成したり、あるいは読み込むデータが含まれるワークスペース変数を参照したりすることができます。式の評価方法の詳細については、記号の解釈を参照してください。
From Workspace ブロックは、スカラー、多次元、可変サイズの信号の実数または複素数のデータ、さらにバスまたはバス配列のデータを読み込むことができます。
From Workspace ブロックでは、モデル内でブロックに生成させる出力のタイプに応じて異なる入力データ形式がサポートされています。すべての出力のタイプとデータ形式で、以下のとおりです。
入力データの時間値は
double
データ型で、単調増加する必要があります。時間値およびデータ値に
Inf
値またはNaN
値が含まれていてはなりません。
出力のタイプ | データ形式 | ヒント |
---|---|---|
スカラーまたはベクトル信号 |
|
|
多次元信号 |
|
|
可変サイズの信号 |
| From Workspace ブロックを使用して読み込むことのできる形式で可変サイズの信号を記録するには、信号を最上位の Outport ブロックに接続し、モデルの [形式] コンフィギュレーション パラメーターを |
バス |
| バスの入力データを部分的に指定するには、入力データ構造体で、データを読み込む必要がないバス要素を |
バス配列 (R2021a 以降) | それぞれがバス配列内のバスのデータを表す構造体の配列 |
|
詳細については、From Workspace ブロックを使用したデータの読み込みを参照してください。
ヒント
To File ブロックを使用して配列形式に記録されたデータを読み込むには、時間値が 1 行ではなく 1 列になるように配列を転置します。関数
transpose
を使用して、転置されたデータを新しいファイルに保存できます。関数
sim
、parsim
、またはbatchsim
を使用して実行したプログラムによるシミュレーションでは、Simulink.SimulationInput
オブジェクトを使用して From Workspace ブロックの読み込むデータを指定できます。関数
setBlockParameter
を使用してブロックに対してシミュレーションで使用するVariableName
パラメーターの値を設定します。関数
setVariable
を使用して、入力データが含まれた変数をSimulationInput
オブジェクトに追加します。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 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
.
出力データ型 — 読み込まれたワークスペース データ型
Inherit: auto
(既定値) | double
| single
| half
| int8
| uint8
| int16
| uint16
| int32
| uint32
| ...
From Workspace ブロックが読み込むワークスペース データのデータ型。既定では、From Workspace ブロックはワークスペース データ、または信号のデータ型を定義する下流のブロックから出力信号のデータ型を継承します。
ヒント
スカラー、ベクトル、または多次元信号のデータを読み込むときに、出力データ型を継承することを選択するか、ワークスペース データのデータ型に一致するように出力データ型を指定することができます。
バスまたはバス配列のデータを読み込むには、[出力データ型] を
Bus: <bus_object>
に設定し、出力バスを定義するSimulink.Bus
オブジェクトの名前を指定します。列挙型データを読み込むときは、[出力データ型] を
Enum: <class_name>
に設定し、列挙型データ値を定義する列挙型クラスの名前を指定します。データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、 をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param
を使用します。
ブロック パラメーターの値をプログラムで取得するには、関数 get_param
を使用します。
パラメーター: | OutDataTypeStr |
値: | 'Inherit: auto' (既定値) | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'boolean' | '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")
specifies that data type must be int32
for the data the From Workspace block named From Workspace
loads into the model myModel
.
サンプル時間 — サンプルの出力周期とオプションの時間オフセット
0
(既定値) | スカラー | ベクトル
[サンプル時間] パラメーターは、シミュレーション中にブロックが新しい出力値を計算するタイミングを指定します。詳細については、サンプル時間の指定を参照してください。
出力に時間オフセットを含めない場合は、[サンプル時間] パラメーターをスカラーとして指定します。出力に時間オフセットを追加する場合は、[サンプル時間] パラメーターを、最初の要素がサンプリング周期、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")
configures the From Workspace block named From Workspace
in the model myModel
to execute with a sample time of 0.1
seconds.
データを内挿する — 内挿法
on
(既定値) | off
内挿法は、読み込まれたワークスペース データにおいて、時間値の間にあるシミュレーション時間に対して出力値を提供するために使用されます。[データを内挿する] を選択すると、From Workspace ブロックは、読み込まれたワークスペース データ内の隣接する値を使用して出力値を線形内挿します。[データを内挿する] が選択されていない場合、From Workspace ブロックは、読み込まれたワークスペース データ内の前のデータ点の値を提供します。内挿アルゴリズムの詳細については、内挿を参照してください。
列挙型、固定小数点、または可変サイズの信号データを読み込む場合は、[データを内挿する] パラメーターをクリアします。
読み込まれたワークスペース データにおいて、最後の値の後に出力値を提供する場合、From Workspace ブロックは [データを内挿する] パラメーターと [最後のデータ後の出力フォーム] パラメーターを組み合わせて使用します。
[データを内挿する] パラメーターの値は、読み込まれたワークスペース データにおいて、From Workspace ブロックが最初のデータ点の前のシミュレーション時間に対して出力値を外挿する方法にも影響を与えます。[データを内挿する] が選択されている場合、From Workspace ブロックはワークスペース データ内の最初の 2 つのデータ点を使用して、最初のデータ点の前のシミュレーション時間に対して出力値を線形外挿します。[データを内挿する] が選択されていない場合は、ブロックは最初のワークスペース データ点の前のシミュレーション時間に対して、出力値としてグラウンドを提供します。From Workspace ブロックの外挿動作に関する詳細については、外挿を参照してください。
プログラムでの使用
ブロック パラメーターの値をプログラムで設定するには、関数 set_param
を使用します。
ブロック パラメーターの値をプログラムで取得するには、関数 get_param
を使用します。
パラメーター: | Interpolate |
値: | 'on' (既定値) | 'off' |
データ型: | char | string |
例: set_param("myModel/From Workspace","Interpolate","off")
configures the From Workspace block named From Workspace
to use zero-order hold interpolation for loading data into the model myModel
.
ゼロクロッシング検出を有効にする — ゼロクロッシング検出
on
(既定値) | 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")
disables the Enable zero-crossing detection parameter for the From Workspace block named From Workspace
in the model myModel
.
最後のデータ後の出力フォーム — 最後のデータ点後のブロック出力を特定するメソッド
外挿
(既定値) | 0 に設定
| 最終値を保持
| 周期的に繰り返す
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")
configures the From Workspace block named From Workspace
in the model myModel
to use the final input data value as the output value for time steps that occur after the last time value in the input data.
ブロックの特性
アルゴリズム
内挿
内挿とは、読み込まれたワークスペース データにおいて、サンプル時間の間にあるシミュレーション時間に対して出力値を提供するために From Workspace ブロックで使用されるプロセスです。[データを内挿する] を選択すると、From Workspace ブロックは、ワークスペース データ内の隣接する 2 点を使用して出力値を線形内挿します。[データを内挿する] を選択しない場合、From Workspace ブロックは前のワークスペース データ点の値を出力値として使用します。たとえば、このモデルには [データを内挿する] が選択された 1 つの From Workspace ブロックと、[データを内挿する] がクリアされたもう 1 つのブロックがあります。どちらのブロックも、ベース ワークスペースから同じ正弦波データを読み込みます。
[データを内挿する] パラメーターを選択すると、From Workspace ブロックは読み込むデータの型に応じて異なるステップを実行します。
double
データの場合、From Workspace ブロックは、シミュレーション時間の前後にワークスペース データ値を使用して値を線形内挿します。
Boolean
データの場合、シミュレーション時間が異なる値を持つ 2 つのワークスペース データ点の間にある場合、From Workspace ブロックはワークスペース データ点の中間に値の遷移を配置します。たとえば、ワークスペース データが true
から false
に遷移する場合、From Workspace データは、ワークスペース データ点の間隔の前半にあるシミュレーション時間に対して出力値 true
を提供し、間隔の後半にあるシミュレーション時間に対して出力値 false
を提供します。
double
および Boolean
以外の組み込みデータ型の場合、From Workspace ブロックは以下のステップを実行します。
データを
double
データ型にアップキャストする。double
値を使用して出力値を線形内挿する。内挿値を元のデータ型にダウンキャストする。
From Workspace ブロックでは、列挙、固定小数点、または可変サイズの信号データの内挿はサポートされません。
外挿
外挿とは、読み込まれたワークスペース データにおいて、最初のデータ点の前および最後のデータ点の後にあるシミュレーション時間に対して出力値を提供するために From Workspace ブロックで使用されるプロセスです。From Workspace ブロックが最初のワークスペース データ値の前に出力値を外挿する方法を [データを内挿する] パラメーターを使用して制御できます。[データを内挿する] パラメーターと [最後のデータ後の出力フォーム] パラメーターを使用して、ブロックが最後のワークスペース データ点の後のシミュレーション時間に対して出力値を外挿する方法を指定します。
データを内挿する | 最初のデータ点前の出力 | 最後のデータ後の出力値フォーム | 最後のデータ点後の出力 |
---|---|---|---|
オン | 最初の 2 つのワークスペース データ点を使用して線形に外挿 | 外挿 | 最後の 2 つのワークスペース データ値を使用して線形に外挿 |
0 に設定 | 0 | ||
最終値を保持 | 最後のワークスペース データ値 | ||
周期的に繰り返す | エラー | ||
オフ | 0 | 外挿 | エラー |
0 に設定 | 0 | ||
最終データ値を保持 | 最後のワークスペース データ値 | ||
周期的に繰り返す | 読み込まれたワークスペース データが時間なしの構造体形式を使用する場合、ワークスペース データを最初の値から繰り返します。 時間付き構造体以外のワークスペース データ形式の場合はエラーになります。 |
たとえば、[データを内挿する] が有効化され、[最後のデータ後の出力フォーム] が [外挿]
に設定された From Workspace ブロックを持つモデルについて考えてみます。From Workspace ブロックは、16 秒のシミュレーション用の Sine Wave ブロックの出力をログに記録することで作成されたワークスペース データを読み取ります。Dashboard Scope ブロックにより、20 秒のシミュレーション用の Sine Wave ブロック出力と From Workspace ブロック出力が表示されます。シミュレーションが 16 秒に到達すると、From Workspace ブロックがシミュレーションの残りの出力値を線形外挿するときに、From Workspace ブロック出力は Sine Wave ブロック出力から離れます。
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
量産コードには推奨されません。From Workspace ブロックで読み込むデータは、静的に割り当てられる配列として生成コードにハード コードされます。コード生成に From Workspace ブロックを使用すると、生成コードのサイズやメモリ使用量が大幅に増える可能性があります。生成コードでの入力端子の実装には、Inport ブロックまたは In Bus Element ブロックを使用してください。
ソフトウェアインザループ (SIL) テストには、SIL/PIL マネージャー (Embedded Coder)を使用することを検討してください。From Workspace ブロックを使用して、モデル参照用の生成コードで SIL テストのための入力を提供できます。詳細については、SIL シミュレーションと PIL シミュレーションを使用した生成コードのテスト (Embedded Coder)を参照してください。
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
Fixed-Point Designer™ を使用して作成された fi
(Fixed-Point Designer) オブジェクトにより入力をサポートします。
バージョン履歴
R2006a より前に導入R2021a: バス配列のデータの読み込み
From Workspace ブロックではバス配列データの読み込みがサポートされています。最上位モデルの From Workspace ブロックでは、ノーマル モードまたはアクセラレータ モードのシミュレーションでバス配列データを読み込むことができます。参照モデルの From Workspace ブロックを使用したバス配列データの読み込みは、参照モデルがノーマル モードで実行されている場合にのみサポートされています。
R2020a: timetable
のサポート
From Workspace ブロックでは timetable
として格納されているデータの読み込みがサポートされています。timetable
にはデータが 1 列だけ含まれている必要があります。
バスの入力データを読み込むと、データを含む構造体には、リーフ信号のデータの単一の列のみを含む 1 つ以上の timetable
オブジェクトが含まれることがあります。
R2018b: string のサポート
From Workspace ブロックでは string データの読み込みがサポートされています。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)