Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

addElement

Simulink.SimulationData.Dataset オブジェクトの最後に要素を追加

説明

ds = addElement(ds,el) は、Simulink.SimulationData.Dataset オブジェクト ds の最後に要素を追加します。

ds = addElement(ds,el,name) は、要素に name 引数で指定された名前を付けます。

すべて折りたたむ

関数 addElement を使用してデータ セットに要素を追加できます。最初に、空の Simulink.SimulationData.Dataset オブジェクトを作成します。

time = 0.1*(0:100)';
ds = Simulink.SimulationData.Dataset;

データ セットに追加する要素を 3 つ作成します。

element1 = Simulink.SimulationData.Signal;
element1.Name = "A";
element1.Values = timeseries(sin(time),time);

element2 = Simulink.SimulationData.Signal;
element2.Name = "B";
element2.Values = timeseries(2*sin(time),time);

element3 = Simulink.SimulationData.Signal;
element3.Name = "C";
element3.Values = timeseries(3*sin(time),time);

関数 addElement を使用してデータ セットに要素を追加します。name 引数を使用して要素の名前を変更できます。

ds = addElement(ds,element1,"Element A");
ds = addElement(ds,element2,"Element B");
ds = addElement(ds,element3,"Element C")
ds = 
Simulink.SimulationData.Dataset '' with 3 elements

                         Name       BlockPath 
                         _________  _________ 
    1  [1x1 Signal]      Element A  ''       
    2  [1x1 Signal]      Element B  ''       
    3  [1x1 Signal]      Element C  ''       

  - Use braces { } to access, modify, or add elements using index.

3 つのシミュレーション入力信号のデータを作成し、それらを Dataset オブジェクトにグループ化します。簡単なモデルで 3 つのルートレベルの Inport ブロックを使用して Dataset オブジェクトの内容を読み込みます。モデルの Dashboard Scope ブロックで、読み込まれた入力データを使用して作成される各信号を表示します。

最初に、モデルに読み込む信号データを作成します。この例では、入力信号の等間隔の時間ベクトルを式を使用して作成します。これは、特に離散入力信号をモデル化する場合を想定したものです。MATLAB® は、他にも等間隔のベクトルを作成する方法をいくつかサポートしますが、他の方法では時間データに倍精度の丸め誤差が生じ、予期しないシミュレーション結果になる場合があります。

sampleTime = 0.01;
numSteps = 1001;
time = sampleTime*(0:numSteps-1);
time = time';

正弦信号、余弦信号、および線形信号の信号データを作成します。

sineVals = sin(2*pi/3*time);
cosVals = cos(2*pi/3*time);
lineVals = time;

各信号のデータを格納する timeseries オブジェクトを作成します。各 timeseries オブジェクトに記述名を付けることで、Dataset オブジェクトにグループ化した後の信号の識別が簡単になります。

sineTS = timeseries(sineVals,time,'Name','Sine Wave');
cosTS = timeseries(cosVals,time,'Name','Cosine Wave');
lineTS = timeseries(lineVals,time,'Name','Line');

Dataset オブジェクトを作成し、関数 addElement を使用して各 timeseries オブジェクトを Dataset オブジェクトに追加します。

inputData = Simulink.SimulationData.Dataset;
inputData.Name = 'inputData';
inputData = addElement(inputData,sineTS);
inputData = addElement(inputData,cosTS);
inputData = addElement(inputData,lineTS)
inputData = 
Simulink.SimulationData.Dataset 'inputData' with 3 elements

                             Name         BlockPath 
                             ___________  _________ 
    1  [1x1 timeseries]      Sine Wave    ''       
    2  [1x1 timeseries]      Cosine Wave  ''       
    3  [1x1 timeseries]      Line         ''       

  - Use braces { } to access, modify, or add elements using index.

ルートレベルの Inport ブロックを使用して外部入力データを読み込む場合、読み込むデータをモデル コンフィギュレーション パラメーターの [データのインポート/エクスポート] ペインで [入力] パラメーターを使用して指定します。モデル LoadInputDataset を開き、[入力] パラメーターが inputData として指定されていることを確認します。

open_system('LoadInputDataset.slx');

モデルをシミュレートします。1 番目の Inport ブロックに接続された Dashboard Scope ブロックで正弦信号が表示され、2 番目の Inport ブロックに接続された Dashboard Scope ブロックで余弦信号が表示され、3 番目の Inport ブロックに接続された Dashboard Scope ブロックで線形信号が表示されます。

out = sim('LoadInputDataset.slx');

Dataset オブジェクトの要素の順序を入れ替えて、Inport ブロックへの要素のマッピングに変更が反映されることを確認できます。

inputData{1} = lineTS;
inputData{3} = sineTS
inputData = 
Simulink.SimulationData.Dataset 'inputData' with 3 elements

                             Name         BlockPath 
                             ___________  _________ 
    1  [1x1 timeseries]      Line         ''       
    2  [1x1 timeseries]      Cosine Wave  ''       
    3  [1x1 timeseries]      Sine Wave    ''       

  - Use braces { } to access, modify, or add elements using index.

モデルを再度シミュレートします。Dataset オブジェクトの要素の新しい順序が反映されて、1 番目の要素を表示する Dashboard Scope ブロックで直線、3 番目の要素を表示する Dashboard Scope ブロックで正弦波が表示されるようになります。

out = sim('LoadInputDataset.slx');

入力引数

すべて折りたたむ

要素を追加する Dataset オブジェクト。Simulink.SimulationData.Dataset オブジェクトとして指定します。

データ セットに追加する要素。Simulink.SimulationData.Dataset オブジェクトの要素として指定します。

シミュレーション データのログ記録で作成された Dataset オブジェクトの場合、それぞれの要素に、ログ記録された 1 つの信号、出力、データ ストア、または状態のデータが格納されます。各要素はオブジェクトであり、オブジェクトのタイプは格納されるデータによって異なります。

シミュレーション入力データをグループ化する Dataset オブジェクトを作成する場合は、各要素に信号、バス、またはバス配列のデータが格納されます。使用する読み込み方法でサポートされる任意の形式でデータを追加できます。

入力のタイプデータ形式

スカラー、ベクトル、または多次元信号

バス

  • バスの階層と一致する timeseriestimetable、または matlab.io.datastore.SimulationDatastore のいずれかのオブジェクトの構造体

  • Simulink.SimulationData.Signal

バス配列

  • 構造体の配列

  • Simulink.SimulationData.Signal

関数呼び出し信号

  • N 行 1 列のベクトル

  • Simulink.SimulationData.Signal

要素の名前。string または文字ベクトルとして指定します。オブジェクトに既に名前が設定されている場合、その名前の代わりに、指定した名前が要素に使用されます。

代替方法

インデックス構文を効率化するために、addElement を使用する代わりに、中かっこ ({}) を使用して要素を Dataset オブジェクトに追加できます。インデックスには、要素数より 1 大きい整数を使用します。新しい要素はデータセットの最後の要素になります。

time = 0.1*(0:100)';
ds = Simulink.SimulationData.Dataset;
element1 = Simulink.SimulationData.Signal;
element1.Name = "A";
element1.Values = timeseries(sin(time),time);
ds{1} = element1;
element2 = Simulink.SimulationData.Signal;
element2.Name = "B";
element2.Values = timeseries(2*sin(time),time);
ds{2} = element2;
element3 = Simulink.SimulationData.Signal;
element3.Name = "C";
element3.Values = timeseries(3*sin(time),time);
ds{3} = element3;

バージョン履歴

R2011a で導入