ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

From File

MAT ファイルからのデータの読み込み

ライブラリ

Sources

説明

From File ブロックは、MAT ファイルからデータを読み込み、データを信号として出力します。このデータは、一連のサンプルです。各サンプルは、タイム スタンプと関連するデータ値で構成されています。

From File ブロックのアイコンには、データを提供する MAT ファイルの名前が表示されます。

同じ 1 つの MAT ファイルからデータを読み取る From File ブロックが複数あってもかまいません。

現在のシミュレーション中、From File ブロックは、To File ブロックにより書き込まれている MAT ファイルからデータを読み取ることはできません。

Version 7.3 MAT ファイル

Version 7.3 の MAT ファイルの場合、From File ブロックはシミュレーション時に MAT ファイルからデータをインクリメントして読み取ります。[サンプル時間] パラメーターは、From File ブロックが MAT ファイルからのデータを読み取るために使用するサンプル時間を指定します。詳細は、「パラメーターとダイアログ ボックス」を参照してください。

ファイルのタイム スタンプは単調非減少でなければなりません。

一致するタイム スタンプが MAT ファイルに含まれないシミュレーション時間ヒットごとに Simulink® ソフトウェアによって内挿または外挿が行われ、選択した方法を使って必要なデータが得られます。詳細は、「対応する MAT ファイル タイム スタンプがない場合のシミュレーション時間ヒット」を参照してください。

From File ブロックが MAT ファイルからデータを読み取るとき、そのデータの格納形式は次の 2 つのうちいずれかでなければなりません。

  • MATLAB® timeseries オブジェクト

  • 配列

ベクトル、double、非複素数の信号にのみ配列形式を使用します。バス信号を読み込むには、バス階層に一致する MATLAB 構造体を使用します。バス階層では、構造体の各リーフが MATLAB timeseries オブジェクトです。

MATLAB の timeseries 形式は、以下のシミュレーション モードとコード生成モードをサポートします。

  • ノーマル

  • アクセラレータ

  • ラピッド アクセラレータ

  • ラピッド シミュレーション ターゲット (RSim)

  • モデル参照アクセラレータ

MATLAB timeseries 形式のデータは、次の値をもつことができます。

  • 任意の次元および実数/複素数

  • Boolean などの任意の組み込みデータ型

  • 最大 32 ビットの語長をもつ固定小数点データ型

  • 列挙型データ

格納されたデータの配列の形式は、行数が 2 行以上の行列です。MAT ファイル内の行列は、次のような形式になります。

各列の最初の要素には、タイム スタンプが入ります。列の残りには、対応する出力値のデータが含まれます。各要素は、NaN を除く double でなければなりません。

配列形式を使用して格納されたデータの場合、From File 出力の幅は、行列の行数で決まります。ある行列の行数が m であるとします。すると、ブロックは長さが m–1 のベクトルを出力します。

Version 7.0 以前の旧バージョン MAT ファイル

Version 7.0 以前の MAT ファイルの場合、From File ブロックによって読み取られるのは、配列形式のデータのみです。MAT ファイルのすべての未圧縮データは、シミュレーション開始時にメモリに読み込まれます。

From File ブロックで使用する MAT ファイルの Version が 7.0 かそれ以前の場合、ファイルを Version 7.3 の MAT ファイルに変換することを検討してください。シミュレーション時に From File ブロックにデータを段階的に読み取らせるか、MATLAB timeseries データを使用するには、Version 7.3 の MAT ファイルを使用してください。たとえば、変数 var を含んでいる my_data_file.mat という名前の Version 7.0 ファイルを変換するには、MATLAB コマンド ラインで次のように入力します。

load('my_data_file.mat')
save('my_data_file.mat', 'var', '-v7.3')

対応する MAT ファイル タイム スタンプがない場合のシミュレーション時間ヒット

シミュレーション時間ヒットに対応する MAT ファイルのタイム スタンプがない場合があります。この場合、From File ブロックの出力は次の条件によって異なります。

  • MAT ファイル内のタイム スタンプに対してヒットするシミュレーション時間の位置

  • 選択した内挿法または外挿法

  • MAT ファイル データのデータ型

内挿および外挿のオプションの詳細は、「パラメーターとダイアログ ボックス」で次のパラメーターの説明を参照してください。

  • 最初のデータ点前のデータ外挿

  • 時間範囲内のデータ内挿

  • 最後のデータ点後のデータ外挿

MAT ファイルでタイム スタンプ値が重複することがあります (2 つ以上のデータ値が同一のタイム スタンプになる)。そのような場合、From File ブロックのアクションは MAT ファイルの重複するタイム スタンプに対してヒットするシミュレーション時間の位置で決まります。

たとえば、MAT ファイルに次のデータがあり、3 つのデータ ポイントのタイム スタンプの値が 2 であるとします。

time stamps:    0 1 2 2 2 3 4
data values:    2 3 6 4 9 1 5

次の表は、From File ブロックの出力の説明です。

シミュレーション時間、MAT ファイルでの重複するタイム スタンプとの位置関係From File ブロックのアクション
重複するタイム スタンプの前

タイム スタンプが異なる場合と同じアクションを実行する。最初の重複するタイム スタンプ値を内挿の基礎として使用する(この例では、そのタイム スタンプの値は 6)。

重複するタイム スタンプと同じ位置かその後

タイム スタンプが異なる場合と同じアクションを実行する。最後の重複するタイム スタンプ値を内挿の基礎として使用する(この例では、そのタイム スタンプの値は 9)。

To File ブロックによって保存されたデータの使用

From File ブロックは、To File ブロックによって書き込まれたデータを修正なしで、データまたは他の特定の形で読み取ります。

バス データの使用

From File ブロックは、非バーチャル バス信号の読み込みをサポートします。

データは、バス階層に一致する MATLAB 構造体内になければなりません。構造体の各リーフは MATLAB timeseries オブジェクトでなければなりません。

データはバス信号を指定不足にすることはできますが、バス信号を過剰指定にすることはできません。構造体は、バス内に対応する信号がない要素をもつことはできません。

構造体では、バス階層のすべての要素にデータが必要なわけではありませんが、バス内の少なくとも 1 つの信号に対応するデータがなければなりません。データを指定しない信号に対して、From File ブロックはグラウンド値を出力します。From File ブロックによって読み取られるデータに可変の次元がある場合、すべての複素数バス信号に対してデータを指定しなければなりません。

コード生成に関する要件

From File ブロックの場合、アクセラレータ、ラピッド アクセラレータ、モデル参照アクセラレータの各モードにおけるシミュレーションまたは、RSim ターゲットのビルドは同じ動作になります。この場合の要件は、ノーマル モードにおけるシミュレーションと同じです。

From File ブロックの場合、ERT/GRT ターゲットのビルド、または SIL/PIL シミュレーション モードの使用を含むコード生成を行うには、以下の要件を満たす必要があります。

  • MAT ファイルに、2 行以上の空でない有限実数行列が含まれている。

    • 行列は double データ型でなければならない。

    • 行列に NaN 要素が含まれていてはならない。

  • From File ブロックのパラメーター ダイアログ ボックスにて、以下の設定を行います。

    • [最初のデータ点前のデータ外挿] および [最後のデータ点後のデータ外挿] パラメーターを [線形外挿] に設定します。

    • [時間範囲内のデータ内挿] パラメーターを [線形内挿] に設定します。

    • [ゼロクロッシング検出を有効にする] パラメーターをオフにします。

サポートするデータ型

From File ブロックは、Simulink がサポートする任意のデータ型の実数または複素数信号データを読み取ることができます。ただし、固定小数点データの語長は最大 32 ビットになります。

From File ブロックは、非バーチャル バス信号の読み取りをサポートします。

パラメーターとダイアログ ボックス

ファイル名

入力として使用されるデータを含んでいる MAT ファイルのパスまたはファイル名。UNIX® では、パス名は、ホーム フォルダーを示すチルダ (~) で始めることができます。既定のファイル名は untitled.mat です。ファイル名でパスの情報が指定されない場合、Simulink は MATLAB 作業フォルダーにあるファイルを読み取ります (作業フォルダーを判定するには、MATLAB コマンド ラインで「pwd」と入力します)。Simulink が、指定されたファイル名を作業フォルダー内に見つけられなかった場合は、エラー メッセージが表示されます。

出力データ型

From File ブロックが読み込むデータのデータ型。非バス型の場合、[継承: 自動] を使用して任意のデータ型検証をスキップできます。出力データ型を指定する場合、From File ブロックはファイル内のデータが指定したデータ型と一致することを確認します。詳細は、「ブロックの出力データ型の指定」を参照してください。

[出力データ型] をバス オブジェクトに設定した場合、そのバス オブジェクトはモデルのコンパイル時に利用可能でなければなりません。バス内の各信号に対して、From File ブロックは、データのデータ型、次元および実数/複素数が、バス オブジェクトが信号用に定義しているものと一致することを確認します。

  • [継承: 自動] — 既定の設定

  • [double]

  • [single]

  • [int8]

  • [uint8]

  • [int16]

  • [uint16]

  • [int32]

  • [uint32]

  • [boolean]

  • [fixdt(1,16,0)] — データ型は固定小数点 (1,16,0) です。

  • [fixdt(1,16,2^0,0)] — データ型は固定小数点 (1,16,2^0,0) です。

  • [Enum: <クラス名>] — データ型は列挙型です。

  • [Bus: <バス オブジェクト>] — データ型はバス オブジェクトです。詳細は、「バス データの使用」を参照してください。

  • [<データ型式>]Simulink.NumericType などのデータ型オブジェクトの名前。バス オブジェクトを式として指定しないでください。

>> (データ型アシスタントを表示)

[データ型アシスタント] を表示すると、[出力データ型] パラメーターを設定しやすくなります。

モード

指定するデータのカテゴリ。詳細は、「ブロックの出力データ型の指定」を参照してください。

  • [継承] — データ型の規則の継承。[継承] を選択すると、右側にある 2 番目のメニュー/テキスト ボックスが有効になります。(既定)

  • [組み込み] — 組み込みデータ型を指定します。[組み込み] を選択すると、右側にある 2 番目のメニュー/テキスト ボックスが有効になります。次の選択肢からいずれかを選択します。

    • [double] — 既定値

    • [single]

    • [int8]

    • [uint8]

    • [int16]

    • [uint16]

    • [int32]

    • [uint32]

    • [boolean]

    • [固定小数点] — 固定小数点データ型

    • [列挙型] — 列挙型のデータ型。[列挙型] を選択すると、右側から 2 番目のメニュー/テキスト ボックスが有効になります。そこにクラス名を入力することができます。

    • [バス] — バス オブジェクト。[バス] を選択すると、右側にある [バス オブジェクト] パラメーターが有効になり、バスの構造を定義するために使用するバス オブジェクトの名前を入力できます。バス オブジェクトを作成または変更する必要がある場合は、[バス オブジェクト] フィールドの右側にある [編集] をクリックして、Simulink バス エディターを開きます。詳細については、「バス エディターによるバス オブジェクトの管理」を参照してください。

    • [式] — データ型に評価する式。[式] を選択すると、右側から 2 番目のメニュー/テキスト ボックスが有効になります。そこに式を入力します。バス オブジェクトを式として指定しないでください。

サンプル時間

ファイルから読み込まれるデータのサンプル時間とオフセット。

From File ブロックは、次のサンプル時間を使用して MAT ファイルからデータを読み取ります。

  • From File ブロックに対して指定されたサンプル時間

  • From File ブロックがデータ共有先のブロックから継承したサンプル時間

既定値は 0 で、これは連続サンプル時間の指定となります。MAT ファイルはモデルの基本レート (最速) で読み取られます。詳細は、「 サンプル時間の指定」を参照してください。

最初のデータ点前のデータ外挿

Simulink が MAT ファイルの最初のタイム スタンプ前のシミュレーション時間ヒットに使用する外挿法。次の外挿法のいずれかを選択します。

メソッド説明
線形外挿

(既定)

MAT ファイルに 1 つのサンプルしか含まれていない場合は、From File ブロックは対応するデータ値を出力します。

MAT ファイルに複数のサンプルが含まれている場合は、From File ブロックは最初の 2 つのサンプルを使用して線形外挿します。

  • double データの場合、最初の 2 つのサンプルを使用して値を線形外挿します

  • Boolean データの場合、最初のデータ値を出力します

  • double および Boolean 以外の組み込みデータ型の場合、データを double にアップキャストし、線形外挿してから (double データの説明を参照)、外挿データ値を元のデータ型にダウンキャストします

列挙型 (enum) データでは、[線形外挿] オプションは使用できません。バス内のすべての信号は同じ外挿設定を使用しているため、バス内のいずれかの信号が enum データを使用する場合は、[線形外挿] オプションを使用できません。

最初の値をホールド

ファイル内の最初のデータ値を使用します

Ground の値

MAT ファイルのサンプル データ値のデータ型によって異なる値を使用します。

  • 固定小数点データ型 — 基礎値を使用します

  • 固定小数点以外の数値型 — 0 を使用します

  • Boolean — は、以下を使用します。 false

  • 列挙型データ — 既定値を使用します

時間範囲内のデータ内挿

Simulink が MAT ファイルの 2 つのタイム スタンプ間のシミュレーション時間ヒットに使用する内挿法。次の内挿法のいずれかを選択します。

メソッド説明
線形内挿

(既定)

From File ブロックは次の 2 つの MAT ファイル サンプルを使用して内挿を行います。

  • double データの場合、2 つの対応するサンプルを使用して値を線形内挿します

  • doubleBoolean 以外の組み込みデータ型の場合、データを double にアップキャストし、線形内挿を実行してから (上記の double データの説明を参照)、内挿された値を元のデータ型にダウンキャストします

列挙型 (enum) データでは、[線形内挿] オプションは使用できません。バス内のすべての信号は同じ内挿設定を使用しているため、バス内のいずれかの信号が enum データを使用する場合は、[線形内挿] オプションを使用できません。

ゼロ次ホールド

2 つのサンプルのうち最初のサンプルのデータを使用します

最後のデータ点後のデータ外挿

Simulink が MAT ファイルの最後のタイム スタンプ後のシミュレーション時間ヒットに使用する外挿法。次の外挿法のいずれかを選択します。

メソッド説明
線形外挿

(既定)

MAT ファイルに 1 つのサンプルしか含まれていない場合は、From File ブロックは対応するデータ値を出力します。

MAT ファイルに複数のサンプルが含まれている場合は、From File ブロックは最後の 2 つのサンプルのデータ値を使用して線形外挿します。

  • double データの場合、最後の 2 つのサンプルを使用して値を線形外挿します

  • Boolean データの場合、最後のデータ値を出力します

  • doubleBoolean 以外の組み込みデータ型の場合、データを double にアップキャストし、線形外挿してから (double データの説明を参照)、外挿値を元のデータ型にダウンキャストします

列挙型 (enum) データでは、[線形外挿] オプションは使用できません。バス内のすべての信号は同じ外挿設定を使用しているため、バス内のいずれかの信号が enum データを使用する場合は、[線形外挿] オプションを使用できません。

最後の値をホールド

ファイル内の最後のデータ値を使用します

Ground の値

MAT ファイルのサンプル データ値のデータ型によって異なる値を使用します。

  • 固定小数点データ型 — 基礎値を使用します

  • 固定小数点以外の数値型 — 0 を使用します

  • Boolean — は、以下を使用します。 false

  • 列挙型データ — 既定値を使用します

ゼロクロッシング検出を有効にする

ゼロクロッシング検出を有効にする場合は選択します。

詳細は、「ゼロクロッシング検出」および以下の説明を参照してください。

Simulink はゼロクロッシング検出という技法を使用することで、小さいタイム ステップを過度に取ることなく正確に不連続を特定します。この節では、不連続を示すときに "ゼロクロッシング" という用語を使用します。

From File ブロックの場合、ゼロクロッシング検出はファイル内のサンプル点のみで発生します。ゼロクロッシングが発生したかどうかを判断するために、From File ブロックはサンプル点の内部にあるタイム スタンプだけを調べます。

入力配列が重複するタイム スタンプを含む (同一のタイム スタンプに複数のエントリがある) 場合、Simulink はそのタイム スタンプで 1 つのゼロクロッシングを検出します。たとえば、入力配列に次のようなデータがあるとします。

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

時間 2 で、入力信号の不連続からゼロクロッシングがあります。

重複しないタイム スタンプのあるデータの場合、ゼロクロッシング検出は次のパラメーターの設定によって変わります。

  • 最初のデータ点前のデータ外挿

  • 時間範囲内のデータ内挿

  • 最後のデータ点後のデータ外挿

From File ブロックは、最初のタイム スタンプの場合、最初と最後のタイム スタンプの間のタイム スタンプの場合、および最後のタイム スタンプの場合にいつゼロクロッシングが発生するのかを判断するときに次のルールを適用します。

タイム スタンプゼロクロッシング検出が発生するタイミング

1 次

[最初のデータ点前のデータ外挿][Ground の値] に設定されます。

最初と最後の間

[時間範囲内のデータ内挿][ゼロ次ホールド] に設定されます。

最後

次の設定の両方またはどちらかが発生します。

  • [最後のデータ点後のデータ外挿][Ground の値] に設定されます。

  • [時間範囲内のデータ内挿][ゼロ次ホールド] に設定されます。

次の図は、次の設定になっている From File ブロックによってアクセスされるデータのゼロクロッシング検出を示しています。

  • [最初のデータ点前のデータ外挿][線形外挿]

  • [時間範囲内のデータ内挿] (内部点の場合) — [ゼロ次ホールド]

  • [最後のデータ点後のデータ外挿][線形外挿]

次の図は、From File ブロックでアクセスされるデータ用のゼロクロッシング検出の別の例を示します。ブロックには、タイム スタンプ (点) 用の次の設定があります。

  • [最初のデータ点前のデータ外挿][最初の値をホールド]

  • [時間範囲内のデータ内挿][ゼロ次ホールド]

  • [最後のデータ点後のデータ外挿][最後の値をホールド]

特性

サンプル時間

[サンプル時間] パラメーターで指定

スカラー拡張

なし

離散化

あり

ゼロクロッシング

有効な場合、あり

この情報は役に立ちましたか?