このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
setExternalInput
Simulink.SimulationInput
オブジェクトを使用して構成されたシミュレーションにおける最上位の入力端子の外部入力データを指定する
説明
例
連続入力信号を読み込むためのシミュレーションの構成
関数 setExternalInput
を使用して、Simulink.SimulationInput
オブジェクトに保存されているシミュレーション構成の外部データを指定します。次に、関数 setBlockParameter
を使用して、入力データを連続信号として読み込むように Inport ブロックを構成します。最後に、Simulink.SimulationInput
オブジェクトを使用してシミュレーションを実行します。
モデル LoadInputData
を開きます。モデルには、[ゲイン] 値が 2
の Gain ブロックに接続されている 1 つの Inport ブロックが含まれています。Gain ブロックの出力が Outport ブロックに接続されています。
mdl = "LoadInputData";
open_system(mdl)
モデルの Simulink.SimulationInput
オブジェクトを作成します。
simIn = Simulink.SimulationInput(mdl);
Inport ブロックを使用して読み込む入力データを作成します。この例では、時間値の等間隔のベクトルを使用して正弦波を表すデータを作成します。次に、関数 sin
を使用して各時点の信号値を作成します。
sampleTime = 0.1; numSteps = 100; time = sampleTime*(0:numSteps); time = time'; data = sin(2*pi/3*time);
複数の形式を使用して、最上位の入力端子の外部入力データを指定できます。この例では、timetable
形式を使用します。timetable
を作成するには、時間データが duration
ベクトルでなければなりません。関数 seconds
を使用して、秒を単位とする duration
ベクトルを作成します。次に、timetable
を作成します。
secs = seconds(time); inData = timetable(secs,data);
関数 setExternalInput
を使用して、Simulink.SimulationInput
オブジェクト simIn
内のシミュレーション構成に外部入力データ inData
を追加します。
simIn = setExternalInput(simIn,inData);
Simulink.SimulationInput
オブジェクトを使用して、ブロック パラメーター値、モデル コンフィギュレーション パラメーター値、変数値など、シミュレーションの他の側面を構成することもできます。
入力データを連続信号として読み込むように Inport ブロックを構成するとします。関数 setBlockParameter
を使用して、[内挿] パラメーターを有効にし、ブロックの [サンプル時間] パラメーターを連続 (0
) として指定します。
inBlk = mdl + "/Inport"; simIn = setBlockParameter(simIn,inBlk,"Interpolate","on"); simIn = setBlockParameter(simIn,inBlk,"SampleTime","0");
SimulationInput
オブジェクトのコンフィギュレーションを使用してモデルをシミュレートします。
out = sim(simIn);
シミュレーションが実行され、入力データが連続信号として読み込まれます。
Dataset
オブジェクトを使用した外部入力データの指定
モデルに複数の最上位の入力端子が含まれている場合、各入力端子のデータをもつ要素を含む Simulink.SimulationData.Dataset
オブジェクトとして読み込む入力データを指定できます。オブジェクトの最初の要素には端子番号 1
の入力端子のデータが含まれ、2 番目の要素には端子番号 2
の入力端子のデータが含まれるといったようになります。
データを含む変数を使用して読み込むデータを指定すると、指定した変数内のデータが Simulink.SimulationInput
オブジェクトに追加されます。これにより、そのデータは、そのオブジェクトを使用して実行されるシミュレーションで使用できるようになります。
次の例では、SimulationInput
オブジェクトを使用して構成されたシミュレーションに、3 つの最上位の入力端子のデータを読み込む方法を示します。各入力端子の入力データでは、使用可能な複数の形式を示すために異なる形式を使用しています。
モデル InportLoading
を開きます。モデルには、3 つの Outport ブロックに直接接続された 3 つの Inport ブロックが含まれています。
mdl = "InportLoading";
open_system(mdl)
関数 createInputDataset
を使用して、モデルの各入力端子の要素を格納する Dataset
オブジェクトを作成します。
inDS = createInputDataset(mdl);
既定では、関数 createInputDataset
で作成された Dataset
オブジェクトには、要素ごとにプレースホルダー timeseries
オブジェクトが含まれます。各入力端子の入力データを作成して、プレースホルダー データを置き換えます。
最初の入力端子では、勾配が 0.5
のラインを表すデータをもつ timeseries
オブジェクトを作成します。時間データで、サンプル時間 (間隔) として 0.5
を使用して、等間隔の時間ベクトルを作成します。信号値を作成するために、時間ベクトルに 0.5
を乗算します。
sampleTime = 0.5; numSteps = 20; time = sampleTime*(0:numSteps)'; data = 0.5*time; lineTS = timeseries(data,time);
2 番目の入力端子で、正弦波を表すデータをもつ timetable
を作成します。
正弦波で、サンプル時間として
0.1
を使用して、等間隔の時間ベクトルを作成します。信号値を作成するために、関数
sin
を使用します。timetable
を作成するには、時間入力がduration
ベクトルでなければなりません。関数seconds
を使用して、時間値を秒単位のduration
ベクトルに変換します。timetable
を作成します。
sampleTime = 0.1; numSteps = 100; time = sampleTime*(0:numSteps)'; sinVals = sin(2*pi/3*time); secs = seconds(time); sinTT = timetable(secs,sinVals);
3 つ目の入力端子で、値 3
の定数のデータを含む構造体を作成します。入力データの読み込みのために、構造体の形式にフィールド time
と signals
が含まれています。signals
フィールドは構造体の配列です。各構造体のフィールド values
内に、信号のデータが含まれています。この例では、構造体で 1 つの入力端子の入力データが指定されているため、配列 signals
の要素は 1 つだけです。
constStruct.time = [0 10]'; constStruct.signals.values = [3 3]';
プレースホルダー データを、各入力端子に作成したデータに置き換えます。
inDS{1} = lineTS; inDS{2} = sinTT; inDS{3} = constStruct;
Simulink.SimulationInput
オブジェクトを作成してモデルのシミュレーションを構成します。
simIn = Simulink.SimulationInput(mdl);
関数 setExternalInput
を使用し、Dataset
オブジェクトを使用して 3 つすべての入力端子で読み込む入力データを指定します。関数は変数 inDs
を SimulationInput
オブジェクトに追加します。
simIn = setExternalInput(simIn,inDS);
SimulationInput
オブジェクトを使用してモデルをシミュレートします。
out = sim(simIn);
シミュレーションが実行され、SimulationInput
オブジェクトで指定した入力データが読み込まれます。
入力引数
simIn
— シミュレーション入力とコンフィギュレーション
Simulink.SimulationInput
オブジェクト
シミュレーション入力とコンフィギュレーション。Simulink.SimulationInput
オブジェクトとして指定します。
inData
— 最上位の入力端子の外部入力データ
Simulink.SimulationData.Dataset
オブジェクト | 構造体 | 配列 | ...
最上位の入力端子の外部入力データ。[入力] パラメーターでサポートされている形式を使用して指定します。
モデルに複数の最上位の入力端子が含まれている場合は、すべての最上位の入力端子のデータを含む単一の変数を使用して、すべての入力端子のデータを指定します。変数として読み込む外部入力データを指定すると、変数内のデータが SimulationInput
オブジェクトに追加され、ローカル ワーカーやリモート ワーカーでのシミュレーションなど、そのオブジェクトを使用して実行する任意のシミュレーションでそのデータを使用できるようになります。
次のような複数の形式を使用して、すべての最上位の入力端子の入力データを 1 つの変数に保存できます。
Simulink.SimulationData.Dataset
—Dataset
オブジェクトの各要素は、最上位の入力端子の入力データを示します。Simulink.SimulationData.DatasetRef
— MAT ファイルに保存されているDataset
オブジェクトからデータがストリーミングされます。時間付きまたは時間なしの構造体 — 入力構造体の
signals
フィールドの各構造体は、最上位の入力端子の入力データを示します。配列 — 最初の列は、すべての信号の時間データを示します。後続の各列は、最上位の入力端子のスカラー信号値を示します。
変数内の信号データの順序と端子番号に基づいて、変数内の信号データが最上位の各入力端子にマッピングされます。たとえば、Dataset
オブジェクトの最初の要素は、端子番号 1
の最上位の入力端子にマッピングされます。
次のような複数の形式を使用して、最上位の各入力端子で読み込むデータの形式を設定できます。
timeseries
timetable
各 timetable オブジェクトには、単一信号のデータを含む 1 つの列が含まれている必要があります。
時間付きまたは時間なしの構造体 — この場合、構造体は 1 つの入力端子の入力データのみを定義します。
配列 — この場合、配列は 1 つの入力端子の入力データのみを定義します。
詳細については、ルート レベルの入力端子へのデータの読み込みを参照してください。
コンマ区切りリスト
Simulink.SimulationInput
オブジェクトの入力データをコンマ区切りリストとして指定する方法は、一般的に推奨されません。
入力データをコンマ区切りリストとして指定すると、関数 setExternalInput
は、データが含まれている変数を SimulationInput
オブジェクトに追加しません。ワークスペースでデータを管理するか、関数 setVariable
を使用して入力データを SimulationInput
オブジェクトに自分で追加することで、SimulationInput
オブジェクトを使用して実行するシミュレーションで入力データが確実に使用可能になるようにしなければなりません。
出力引数
simIn
— 外部入力が追加されたシミュレーションの構成
Simulink.SimulationInput
オブジェクト
外部入力が追加されたシミュレーションの構成。Simulink.SimulationInput
オブジェクトとして返されます。
ヒント
ワークスペースから読み込むデータを指定するパラメーターをもつブロックで読み込む入力データを指定するには、ブロック パラメーター値を変数として指定します。次に、関数
setVariable
を使用して、SimulationInput
オブジェクトで表されているシミュレーション構成内の変数の値を指定します。たとえば、From Workspace ブロックで読み込むデータを指定するには、From Workspace ブロックの [データ] パラメーターを変数として指定します。次に、関数
setVariable
を使用して、変数の値を指定します。ファイルから入力データを読み込むには、入力データを含むファイルにシミュレーションからアクセスできることを確認してください。関数
parsim
およびbatchsim
を使用してシミュレーションを実行すれば、名前と値の引数AttachedFiles
を使用してファイルをワーカーに送信できます。
バージョン履歴
R2017a で導入
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)