get
Simulink.SimulationData.Dataset オブジェクトから要素または要素の集合を取得
説明
は、element = get(dataset,index)Simulink.SimulationData.Dataset オブジェクト dataset 内のインデックスに対応する要素を返します。関数 getElement の構文と動作は関数 get と同じです。
例
モデル sldemo_fuelsys を開きます。このモデルはフォールトトレラント燃料制御システムをモデル化します。モデルの詳細については、フォールトトレラント燃料制御システムのモデル化を参照してください。
mdl = "sldemo_fuelsys";
open_system(mdl)[コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] ペインで、以下に留意してください。
モデルは単一の
Simulink.SimulationOutputオブジェクトとしてシミュレーション出力を返すように構成されていません。モデルでは信号ログ データ用に変数名
sldemo_fuelsys_outputを使用しています。
モデルのシミュレーションを実行します。
sim(mdl);
信号ログ データが格納された Dataset オブジェクト sldemo_fuelsys_output にアクセスします。
sldemo_fuelsys_output
sldemo_fuelsys_output =
Simulink.SimulationData.Dataset 'sldemo_fuelsys_output' with 10 elements
Name BlockPath
______________ ________________________________________
1 [1x1 Signal] '' sldemo_fuelsys/EGO Fault Switch
2 [1x1 Signal] air_fuel_ratio sldemo_fuelsys/Engine Gas Dynamics
3 [1x1 Signal] '' sldemo_fuelsys/Engine Speed Fault Switch
4 [1x1 Signal] speed sldemo_fuelsys/Engine_Speed_Selector
5 [1x1 Signal] '' sldemo_fuelsys/MAP Fault Switch
6 [1x1 Signal] map sldemo_fuelsys/MAP_Selector
7 [1x1 Signal] ego sldemo_fuelsys/O2_Voltage_Selector
8 [1x1 Signal] '' ...o_fuelsys/Throttle Angle Fault Switch
9 [1x1 Signal] throttle sldemo_fuelsys/Throttle_Angle_Selector
10 [1x1 Signal] fuel sldemo_fuelsys/To Plant
- Use braces { } to access, modify, or add elements using index.
Dataset オブジェクトの要素へのアクセスには、中かっこを使ったインデックスを使用できます。たとえば、インデックス 9 を使用して信号ログの Dataset オブジェクトの throttle 要素にアクセスします。
el9 = sldemo_fuelsys_output{9}el9 =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'throttle'
PropagatedName: ''
BlockPath: [1×1 Simulink.SimulationData.BlockPath]
PortType: 'outport'
PortIndex: 1
Values: [1×1 timeseries]
Methods, Superclasses
信号データは、Simulink.SimulationData.Signal オブジェクトの Values プロパティに timeseries オブジェクトとして格納されています。時間値は timeseries オブジェクトの Time プロパティにあります。信号値は Data プロパティにあります。
el9.Values
timeseries
Common Properties:
Name: 'throttle'
Time: [203009x1 double]
TimeInfo: [1x1 tsdata.timemetadata]
Data: [203009x1 double]
DataInfo: [1x1 tsdata.datametadata]
More properties, Methods
el9.Values.Data
ans = 203009×1
10.0000
10.0028
10.0169
10.0500
10.1000
10.1500
10.2000
10.2155
10.2155
10.2155
10.2500
10.2845
10.3000
10.3500
10.4000
⋮
モデル GetDatasetElements をシミュレートします。このモデルは、3 つのソース ブロックから生成されるデータを Dataset 形式を使用してログ記録します。
out = sim("GetDatasetElements");既定では、すべてのログ データが out という名前の Simulink.SimulationOutput オブジェクトとしてワークスペースの単一の変数で返されます。ログ記録された出力データは、既定の名前 yout をもつ Simulink.SimulationData.Dataset オブジェクトにグループ化されます。ログ記録された出力データにはドット表記を使用してアクセスできます。
out.yout
ans =
Simulink.SimulationData.Dataset 'yout' with 3 elements
Name BlockPath
________ _______________________
1 [1x1 Signal] SameName GetDatasetElements/Out1
2 [1x1 Signal] SameName GetDatasetElements/Out2
3 [1x1 Signal] DifName GetDatasetElements/Out3
- Use braces { } to access, modify, or add elements using index.
関数 get でインデックス 2 を使用して Dataset オブジェクトの 2 番目の要素にアクセスします。
el = get(out.yout,2)
el =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'SameName'
PropagatedName: ''
BlockPath: [1×1 Simulink.SimulationData.BlockPath]
PortType: 'inport'
PortIndex: 1
Values: [1×1 timeseries]
Methods, Superclasses
モデル GetDatasetElements は、3 つのソース ブロックから生成されるデータを Dataset 形式を使用してログ記録します。このモデルでは、Sine Wave ブロックからの信号と Constant ブロックからの信号で同じ名前を共有しています。Pulse Generator ブロックからの信号は一意の名前をもちます。
open_system("GetDatasetElements")モデルのシミュレーションを実行します。
out = sim("GetDatasetElements");既定では、すべてのログ データが out という名前の Simulink.SimulationOutput オブジェクトとしてワークスペースの単一の変数で返されます。ログ記録された出力データを含む Simulink.SimulationData.Dataset オブジェクトにドット表記を使用してアクセスします。
out.yout
ans =
Simulink.SimulationData.Dataset 'yout' with 3 elements
Name BlockPath
________ _______________________
1 [1x1 Signal] SameName GetDatasetElements/Out1
2 [1x1 Signal] SameName GetDatasetElements/Out2
3 [1x1 Signal] DifName GetDatasetElements/Out3
- Use braces { } to access, modify, or add elements using index.
関数 get を使用して DifName という名前の要素を返します。名前 DifName は一意であるため、その要素の Simulink.SimulationData.Signal オブジェクトが関数から返されます。
el = get(out.yout,"DifName")el =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'DifName'
PropagatedName: ''
BlockPath: [1×1 Simulink.SimulationData.BlockPath]
PortType: 'inport'
PortIndex: 1
Values: [1×1 timeseries]
Methods, Superclasses
関数 get は要素が一意でない場合でも使用できます。名前 SameName は一意でないため、SameName という名前の要素を含む Simulink.SimulationData.Dataset オブジェクトが関数から返されます。
ds = get(out.yout,"SameName")ds =
Simulink.SimulationData.Dataset '' with 2 elements
Name BlockPath
________ _______________________
1 [1x1 Signal] SameName GetDatasetElements/Out1
2 [1x1 Signal] SameName GetDatasetElements/Out2
- Use braces { } to access, modify, or add elements using index.
モデル GetDatasetElements は、3 つのソース ブロックから生成されるデータを Dataset 形式を使用してログ記録します。このモデルでは、Sine Wave ブロックからの信号と Constant ブロックからの信号で同じ名前を共有しています。Pulse Generator ブロックからの信号は一意の名前をもちます。
open_system("GetDatasetElements")モデルのシミュレーションを実行します。
out = sim("GetDatasetElements");既定では、すべてのログ データが out という名前の Simulink.SimulationOutput オブジェクトとしてワークスペースの単一の変数で返されます。ログ記録された出力データを含む Simulink.SimulationData.Dataset オブジェクトにドット表記を使用してアクセスします。
out.yout
ans =
Simulink.SimulationData.Dataset 'yout' with 3 elements
Name BlockPath
________ _______________________
1 [1x1 Signal] SameName GetDatasetElements/Out1
2 [1x1 Signal] SameName GetDatasetElements/Out2
3 [1x1 Signal] DifName GetDatasetElements/Out3
- Use braces { } to access, modify, or add elements using index.
関数 get で文字ベクトルを含む cell 配列を使用して Dataset オブジェクトを返します。要素の名前が一意であれば、1 つの要素を含む Dataset オブジェクトが関数 get から返されます。要素の名前が一意でなければ、その名前のすべての要素を含む Dataset オブジェクトが関数 get から返されます。たとえば、DifName という名前の要素を含む Dataset オブジェクトを作成します。
ds = get(out.yout,{'DifName'})ds =
Simulink.SimulationData.Dataset '' with 1 element
Name BlockPath
_______ _______________________
1 [1x1 Signal] DifName GetDatasetElements/Out3
- Use braces { } to access, modify, or add elements using index.
モデル AccessDatasetNestedBus にはバスの入れ子配列が含まれています。2 つのバスの配列 Bus2 と Bus3 がログ記録用にマークされています。topBus は Outport ブロックを使用してログ記録されます。この例では、バス階層内の Dataset の要素にアクセスする方法を示します。

モデルを開いてシミュレートします。
mdl = "AccessDatasetNestedBus";
open_system(mdl)
out = sim(mdl);すべてのログ データが Simulink.SimulationOutput オブジェクトとして単一の変数 out で返されます。信号ログ データ logsout を含む Dataset オブジェクトにドット表記を使用してアクセスします。
ds = out.logsout
ds =
Simulink.SimulationData.Dataset 'logsout' with 2 elements
Name BlockPath
____ ________________________________________
1 [1x1 Signal] Bus3 ...ssDatasetNestedBus/Matrix Concatenate
2 [1x1 Signal] Bus2 ...sDatasetNestedBus/Vector Concatenate1
- Use braces { } to access, modify, or add elements using index.
topBus のデータは Dataset オブジェクト yout にログ記録されています。
ds2 = out.yout
ds2 =
Simulink.SimulationData.Dataset 'yout' with 1 element
Name BlockPath
______ ___________________________
1 [1x1 Signal] topBus AccessDatasetNestedBus/Out1
- Use braces { } to access, modify, or add elements using index.
関数 get を使用して Dataset オブジェクトの各要素の信号ログ情報にアクセスできます。たとえば、関数 get を使用して Bus2 という名前のバスの配列の Simulink.SimulationData.Signal オブジェクトを返します。
get(ds,"Bus2")ans =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'Bus2'
PropagatedName: ''
BlockPath: [1×1 Simulink.SimulationData.BlockPath]
PortType: 'outport'
PortIndex: 1
Values: [2×1 struct]
Methods, Superclasses
ログ データの値は Signal オブジェクトの Values プロパティに格納されています。バスの配列の場合、データは MATLAB® 構造体の配列としてログ記録されます。
get(ds,"Bus2").Valuesans=2×1 struct array with fields:
a
b
配列内の構造体のインデックスを使用して特定の構造体にアクセスできます。たとえば、Constant ブロック Constant6 と Constant7 からの信号の timeseries オブジェクトを含む構造体にアクセスするには、インデックス 2 を使用します。
get(ds,"Bus2").Values(2)ans = struct with fields:
a: [1×1 timeseries]
b: [1×1 timeseries]
構造体内の timeseries オブジェクトにはドット表記を使用してアクセスします。たとえば、Constant6 ブロックからの信号の timeseries オブジェクトにアクセスします。
get(ds,"Bus2").Values(2).a timeseries
Common Properties:
Name: 'a'
Time: [51x1 double]
TimeInfo: [1x1 tsdata.timemetadata]
Data: [51x1 double]
DataInfo: [1x1 tsdata.datametadata]
More properties, Methods
信号値は Data プロパティに格納されています。
get(ds,"Bus2").Values(2).a.Dataans = 51×1
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
⋮
Bus2 をログ記録用にマークしていなかったとします。その場合も、Dataset オブジェクトの要素 Bus3 を使用して Constant6 ブロックからの信号の信号値を取得できます。
get(ds,"Bus3").Values(2,2).a.Dataans = 51×1
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
⋮
同様に、Dataset オブジェクトの要素 topBus を使用して Constant6 ブロックからの信号の信号値にアクセスすることもできます。
get(ds2,"topBus").Values.Bus3(2,2).a.Dataans = 51×1
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
⋮
入力引数
要素を取得する Dataset オブジェクト。Simulink.SimulationData.Dataset オブジェクトとして指定します。
取得する要素のインデックス。正の整数として指定します。
取得する Dataset オブジェクトの要素の名前。以下として指定します。
Datasetオブジェクトの要素の名前を反映する string。Datasetオブジェクトの要素の名前を反映する文字配列。Datasetオブジェクトの要素の名前を反映する 1 つの文字ベクトルを含む cell 配列。1 つの要素を含む可能性のあるDatasetオブジェクトを返すためにこの形式を使用します。スクリプトを記述するときにこの形式を検討します。
代替方法
get または getElement を使用する代わりに、中かっこを使用してインデックス構文を効率化し、Dataset オブジェクト内の要素にアクセスできます。インデックスは、変数の要素数以下の正の整数でなければなりません。たとえば、logsout データセットの 2 番目の要素を取得します。
logsout{2}また、関数 find を使用して、データセットから要素または要素の集合を取得できます。
バージョン履歴
R2011a で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)