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

From Spreadsheet

スプレッドシートからのデータの読み取り

  • ライブラリ:
  • Simulink / Sources

説明

From Spreadsheet ブロックは Microsoft® Excel® (すべてのプラットフォーム) または CSV (Microsoft Office のみインストールされた Microsoft Windows® プラットフォーム) スプレッドシートからデータを読み取り、データを信号として出力します。From Spreadsheet ブロックでは Microsoft Excel スプレッドシートのチャートはサポートされません。

From Spreadsheet アイコンには、ブロックの [ファイル名] および [シート名] パラメーターで指定されたスプレッドシートのファイル名とシート名が表示されます。

格納形式

From Spreadsheet ブロックがスプレッドシートから読み取るデータは、適切な形式でなければなりません。

Microsoft Excel スプレッドシートの場合

  • From Spreadsheet ブロックは最初の行を信号名と解釈します。信号名を指定しないと、From Spreadsheet ブロックは Signal # の形式の既定の信号名を割り当てます。ここで # は、無名の信号が追加されるたびにインクリメントする値です。

  • From Spreadsheet ブロックは、最初の列を時間として解釈します。この列では、時間値が単調増加しなければなりません。

  • From Spreadsheet ブロックは、残りの列を信号として解釈します。

この例は、正しい形式の Microsoft Excel スプレッドシートを示しています。最初の列は時間で、1 行目には信号名が含まれます。各ワークシートに 1 つの信号グループが含まれます。

CSV テキスト ファイルの場合 (Microsoft Office のみがインストールされた Microsoft プラットフォーム):

  • From Spreadsheet ブロックは、最初の列を時間として解釈します。この列では、時間値が増加しなければなりません。

  • From Spreadsheet ブロックは、残りの列を信号として解釈します。

  • 各列には、同じ数の項目が含まれなければなりません。

  • From Spreadsheet ブロックは、各ファイルを 1 つの信号グループとして解釈します。

この例は、正しい形式の CSV ファイルを示しています。内容は 1 つの信号グループを表しています。

0,0,0,5,0
1,0,1,5,0
2,0,1,5,0
3,0,1,5,0
4,5,1,5,0
5,5,1,5,0
6,5,1,5,0
7,0,1,5,0
8,0,1,5,1
9,0,1,5,1
10,0,1,5,0

シミュレーション時のブロックの動作

From Spreadsheet ブロックは、シミュレーション中にスプレッドシートからデータをインクリメンタルに読み取ります。

[サンプル時間] パラメーターは、From Spreadsheet ブロックがスプレッドシートからデータを読み取るために使用するサンプル時間を指定します。詳細については、パラメーターを参照してください。ファイルのタイム スタンプは単調非減少でなければなりません。

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

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

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

  • シミュレーション時間ヒットが最初のタイム スタンプより前、最初と最後のタイム スタンプの間、最後のタイム スタンプより後のいずれであるか

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

  • スプレッドシート データのデータ型

内挿オプションおよび外挿オプションの詳細については、次のパラメーターの説明を参照してください。

スプレッドシートで 2 つ以上のデータ値が同一のタイム スタンプになることがあります。そのような場合、From Spreadsheet ブロックのアクションはスプレッドシートの重複するタイム スタンプに対するシミュレーション時間ヒットのタイミングで決まります。

たとえば、スプレッドシートに次のデータが含まれているとします。3 つのデータ値に、2 のタイム スタンプ値が含まれています。

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

次の表で、From Spreadsheet ブロックの出力を説明します。

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

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

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

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

端子

出力

すべて展開する

指定したスプレッドシートからのインクリメンタルなデータ。

[サンプル時間] パラメーターは、From Spreadsheet ブロックがスプレッドシートからデータを読み取るために使用するサンプル時間を指定します。詳細については、パラメーターを参照してください。ファイルのタイム スタンプは単調非減少でなければなりません。

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

From Spreadsheet ブロックは、ブロック レベルでのデータ型の指定を受け入れます。信号ごとに異なるデータ型を指定する場合は、[出力データ型][Inherit: auto] を選択することを検討してください。このオプションでは、逆伝播を使用して信号のデータ型を元に戻します。たとえば、From Spreadsheet ブロック内に In1 と In2 の 2 つの信号があり、このブロックが int8 データ型と Boolean データ型をもつ端子にその信号を送信するとします。逆伝播により、ブロックは In1 を int8 として、In2 を Boolean として再キャストします。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated

パラメーター

すべて展開する

スプレッドシート ファイルの絶対パスとファイル名を入力します。

このブロックは、Microsoft プラットフォームでのみ英語以外の絶対パスとファイル名をサポートします。

プログラムでの使用

ブロック パラメーター: FileName
: 文字ベクトル
: 絶対パスとファイル名
既定の設定: 'untitled.xlsx'

スプレッドシートにシートの名前を入力します。このエディット ボックスにシート名を入力するか、シートを開いてからシート名を選択します。

スプレッドシートが CSV 形式である場合、ブロックによってこのパラメーターに CSV ファイルの名前 (拡張子なし) が設定されます。この値は変更しないでください。

シートを開くには、 をクリックします。シートでは、目的の値の範囲をドラッグしてデータの範囲を選択できます。

あるいは、[範囲] パラメーターで値の範囲を指定して、データの範囲を選択できます。

プログラムでの使用

ブロック パラメーター: SheetName
: 文字ベクトル
: シート名
既定の設定: 'Sheet1'

範囲を指定するには、形式 column:row を使用して、複数の指定をコンマで区切ります。たとえば、A1:B3,D1:D3,A7:B9,D7:D9 とします。指定しない場合、または空の場合、ブロックは使用されている範囲、すなわちシート内のすべてのデータを自動的に検出します。

選択がオーバーラップする場合、ブロックは選択情報を適切に解決します。たとえば、A1:B4,B1:E7 のようにオーバーラップする複数の範囲を指定している場合、ブロックは A1 から E7 までの選択 (A1 と E7 も含む) と解決します。

[範囲] パラメーターの使用に代わる代替方法は、 をクリックしてシートを開くことです。シートでは、目的の値の範囲をドラッグしてデータの範囲を選択できます。

プログラムでの使用

ブロック パラメーター: Range
: 文字ベクトル
: セル範囲
既定の設定: ''

From Spreadsheet ブロック出力のデータ型。From Spreadsheet ブロックは、多くのデータ型を含むスプレッドシートを受け入れます。ただし、ブロックはスプレッドシートのデータ型を double として読み取ります。その後、[出力データ型] の値に従ってデータ型を出力します。

信号ごとに異なるデータ型を指定する場合は、[出力データ型][Inherit: auto]を選択することを検討してください。このオプションでは、逆伝播を使用して信号のデータ型を元に戻します。たとえば、From Spreadsheet ブロック内に In1 と In2 の 2 つの信号があり、このブロックが int8 データ型と Boolean データ型をもつ端子にその信号を送信するとします。逆伝播により、ブロックは In1 を int8 として、In2 を boolean として再キャストします。

ブロックが受信ブロックの出力データ型と一致するように出力データ型のキャストを可能にするには、[Inherit: auto] を使用します。

詳細については、信号のデータ型の制御を参照してください。

プログラムでの使用

ブロック パラメーター: OutDataTypeStr
: 文字ベクトル
: 'Inherit: auto' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'boolean' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | 'Enum: <class name>' | '<data type expression>'
既定の設定: 'Inherit: auto'

スプレッドシートの最初の列をブロックでどのように扱うかを選択します。

  • 時間 — 最初の列を時間として扱います。

  • データ —最初の列をデータとして扱います。

依存関係

[データ] を選択すると、このブロックでは次が無効になります。

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

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

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

また、次が有効になります。

  • 最後のデータ点後の出力

プログラムでの使用

ブロック パラメーター: TreatFirstColumnAs
: 文字ベクトル
: 'Time' | 'Data'
既定の設定: 'Time'

サンプリング周期とオフセット。

From Spreadsheet ブロックは、次のいずれかのサンプル時間を使用してスプレッドシートからデータを読み取ります。

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

  • From Spreadsheet ブロックがデータのフィード先のブロックから継承したサンプル時間

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

プログラムでの使用

パラメーター: SampleTime
型: 文字ベクトル
値: スカラー | ベクトル
既定の設定: '0'

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

メソッド説明
線形外挿

(既定)

スプレッドシートにサンプルが 1 つしか含まれていない場合、From Spreadsheet ブロックは対応するデータ値を出力します。

スプレッドシートに 1 つを超えるサンプルが含まれる場合、From Spreadsheet ブロックは最初の 2 つのサンプルを使用して次のように線形外挿を実行します。

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

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

  • double または Boolean 以外の組み込みデータ型の場合は次のようになります。

    • データを double にアップキャストする

    • 線形外挿を実行する (double データの説明を参照)

    • 外挿データ値を元のデータ型にダウンキャストする

列挙型 (enum) データでは、[線形外挿] オプションは使用できません。

最初の値をホールド

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

グラウンド値

スプレッドシートのサンプル データ値のデータ型によって異なる値を使用します。

  • 固定小数点データ型 — グラウンド値を使用します

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

  • Booleanfalse を使用します

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

依存関係

このパラメーターを有効にするには、[最初の列の扱い][時間] に設定します。

プログラムでの使用

パラメーター: ExtrapolationBeforeFirstDataPoint
型: 文字ベクトル
値: 'Linear extrapolation' | 'Hold first value' | 'Ground value'
既定の設定: 'Linear extrapolation'

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

メソッド説明
線形内挿

(既定)

From Spreadsheet ブロックは、2 つの対応するスプレッドシート サンプルを使用して内挿します。

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

  • Boolean データの場合、最初の半分のサンプルに false を使用し、残りの半分に true を使用します

  • double または Boolean 以外の組み込みデータ型の場合は次のようになります。

    • データを double にアップキャストする

    • 線形内挿を実行する (double データの説明を参照)

    • 内挿値を元のデータ型にダウンキャストする

列挙型 (enum) データでは、[線形内挿] オプションは使用できません。

ゼロ次ホールド

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

依存関係

このパラメーターを有効にするには、[最初の列の扱い][時間] に設定します。

プログラムでの使用

パラメーター: InterpolationWithinTimeRange
型: 文字ベクトル
値: 'Linear interpolation' | 'Zero order hold'
既定の設定: 'Linear interpolation'

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

メソッド説明
線形外挿

(既定)

スプレッドシートにサンプルが 1 つしか含まれていない場合、From Spreadsheet ブロックは対応するデータ値を出力します。

スプレッドシートに 1 つを超えるサンプルが含まれる場合、From Spreadsheet ブロックは最後の 2 つのサンプルのデータ値を使用して線形外挿を実行します。

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

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

  • double または Boolean 以外の組み込みデータ型の場合は次のようになります。

    • データを double にアップキャストする。

    • 線形外挿を実行する (double データの説明を参照)。

    • 外挿値を元のデータ型にダウンキャストする。

列挙型 (enum) データでは、[線形外挿] オプションは使用できません。

最後の値をホールド

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

グラウンド値

スプレッドシートのサンプル データ値のデータ型によって異なる値を使用します。

  • 固定小数点データ型 — グラウンド値を使用します

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

  • Booleanfalse を使用します

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

依存関係

このパラメーターを有効にするには、[最初の列の扱い][時間] に設定します。

プログラムでの使用

パラメーター: ExtrapolationAfterLastDataPoint
型: 文字ベクトル
値: 'Linear extrapolation' | 'Hold last value' | 'Ground value'
既定の設定: 'Linear extrapolation'

最後のデータ点後のアクションを選択します。

  • 反復列[範囲] で指定した範囲の最初の行からデータを読み取ることで、シーケンスを繰り返します。

  • 最終値をホールド — 残りのシミュレーションで最後に定義した値を出力します。

  • グラウンド値[出力データ型] で指定したデータ型の値に応じたグラウンド値を出力します。

依存関係

このパラメーターを有効にするには、[最初の列の扱い][データ] に設定します。

プログラムでの使用

パラメーター: OutputAfterLastPoint
型: 文字ベクトル
値: 'Repeating sequence' | 'Hold final value' | 'Ground value'
既定の設定: 'Repeating sequence'

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

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

Simulink はゼロクロッシング検出という手法を使用して、過度に小さいタイム ステップを取ることなくタイム スタンプの不連続点を特定します。このコンテキストでは、ゼロクロッシングは不連続点を表すために使用されます。

From Spreadsheet ブロックの場合、ゼロクロッシング検出はファイル内のタイム スタンプのみで発生します。Simulink はタイム スタンプのみを調べ、データ値は調べません。

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

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

時間 2 に入力信号の不連続によるゼロクロッシングがあります。

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

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

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

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

ブロックはゼロクロッシングが発生するタイミングを決定する際に以下のルールを適用します。

  • 最初のタイム スタンプの場合

  • 最初と最後のタイム スタンプの間のタイム スタンプの場合

  • 最後のタイム スタンプの場合

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

1 次

[最初のデータ点前のデータ外挿][グラウンド値] に設定されます。

最初と最後の間

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

最後

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

  • [最後のデータ点後のデータ外挿][グラウンド値] に設定されます。

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

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

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

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

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

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

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

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

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

プログラムでの使用

ブロック パラメーター: ZeroCross
: 文字ベクトル
: 'off' | 'on'
既定の設定: 'off'

ブロックの特性

データ型

Boolean | double | enumerated | fixed point[a] | integer | single

直接フィードスルー

いいえ

多次元信号

いいえ

可変サイズの信号

いいえ

ゼロクロッシング検出

はい

[a] 32 ビットまでの固定小数点データ型をサポートします。

アルゴリズム

すべて展開する

From Spreadsheet ブロックがスプレッドシートからデータを読み取る際、すべての信号が倍精度で読み取られ、[出力データ型] パラメーターで指定された出力信号のデータ型にキャストされます。キャスト中に、ブロックは次で説明する丸めモードと整数オーバーフローでの飽和を使用します。

拡張機能

R2015b で導入