ドキュメンテーション

目次

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

データ構造体のインポート

データ構造体

Simulink® ソフトウェアは、データをワークスペースから構造体の形で読み込むことができます。この構造体の名前は、[コンフィギュレーション パラメーター][データのインポート/エクスポート][入力] パラメーターで指定します。

MATLAB® 構造体の定義についての詳細は、MATLAB ドキュメンテーションの「構造体配列の作成」を参照してください。

この構造体には、常に値フィールドと次元フィールドを含む信号のサブ構造体が含まれています。信号データの詳細は、「信号データの指定」を参照してください。実行するモデリング タスクに応じて、構造体に時間フィールドを含めることができます。

モデルの構造体を全体として、または端子ベースで指定することができます。[入力] パラメーター用の端子単位の構造体の指定の詳細は、「すべての端子用の 1 つの構造体、または各端子用の 1 つの構造体」を参照してください。

使用する構造体の形式は、データを離散信号 (信号が時間の等間隔値で定義されている) としてインポートしているか、連続信号 (信号が時間のすべての値に定義されている) をインポートしているかによって異なります。離散信号の場合、空の時間ベクトルをもつ構造体を使用します。連続信号の場合、データが滑らかな曲線を表すか、データの範囲全体にわたって不連続 (ジャンプする) かによって、方法が異なります。詳細は、以下を参照してください。

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

連続信号の場合、時間ベクトルを含む time フィールドを指定する場合があります。「インポートされたデータの時間および信号の値」を参照してください。

すべての端子用の 1 つの構造体、または各端子用の 1 つの構造体

モデル内のすべてのルートレベルの入力端子への入力を提供する 1 つの構造体を指定するか、端子ごとに別々の構造体を指定することができます。

端子別の構造体形式は、各端子に対する独立した時間付き構造体 1 個または時間なし構造体 1 個で構成されます。各端子の入力データ構造には、signals フィールドが 1 つだけあります。このオプションを指定するには、構造体の名前を [入力] テキスト フィールドにコンマ区切りリスト in1, in2, ..., inN として入力します。ここで、in1 はモデルの最初の入力端子に対するデータ、in2 は 2 番目の入力端子に対するデータ、その他も同様に各入力端子に対するデータです。

構造体データのインポートに関するこのセクションの残りの部分では、すべての端子に対して 1 つの構造体を指定する方法に焦点を当てます。

信号データの指定

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

値フィールド

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

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

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

次元フィールド

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

    メモ:   Inport ブロックまたは Trigger ブロックの [端子の次元] パラメーターは、対応する入力構造体の dimensions フィールドの値と同じになるように設定しなければなりません。値が異なる場合、モデルをシミュレーションしようとするとエラー メッセージが表示されます。

時間データの指定

時間ベクトルをデータ構造体の一部としてインポートするように指定できます。「インポートされたデータの時間および信号の値」セクションでは、時間ベクトルが必要になる場合を示しています。

次の表には、インポートする信号データの種類に基づいて、時間値を指定する方法の推奨手順を示しています。

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

離散サンプル時間のある Inport または Trigger ブロック

時間ベクトルを指定しないでください。Simulink はタイム ステップごとに 1 つの信号値を読み取ります。

等間隔離散信号

次の形式での式の使用を検討してください。

TimeVector = Ts * (0:N); 

ここで Ts はタイム ステップで、N はタイム ステップの数です。

不均等間隔値

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

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

信号および時間データの指定の例

1 番目の例では、単一の入力端子がある次のモデルを検討します。

  1. int8 型の 2 要素信号ベクトルの 11 個の時間サンプルを読み込む入力構造体を作成します。

    N = 10
    Ts = 0.1
    a.time = (0:N)*Ts';
    c1 = int8([0:1:10]');
    c2 = int8([0:10:100]');
    a.signals(1).values = [c1 c2];
    a.signals(1).dimensions = 2;
    
  2. [コンフィギュレーション パラメーター][データのインポート/エクスポート][入力] パラメーターのエディット ボックスで、変数 a を指定します。

  3. Inport ブロックのダイアログ ボックスの [信号属性] タブで、[端子の次元]2 に設定し、[データ型][int8] に設定します。

もう 1 つの例として、2 つの入力のあるモデルを検討します。

1 番目の端子に正弦波、2 番目の端子に余弦波を入力するとします。それには、MATLAB ワークスペースに次のような構造体 a を定義します。

a.time = (0:0.1:1)';
a.signals(1).values = sin(a.time);
a.signals(1).dimensions = 1;
a.signals(2).values = cos(a.time);
a.signals(2).dimensions = 1;

[コンフィギュレーション パラメーター][データのインポート/エクスポート][入力] パラメーターのエディット ボックスに構造体名 (a) を入力します。

    メモ:    このモデルでは、次元とデータ型を指定する必要がないことに注意してください。これは既定値が 1 および double であるためです。

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