このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
get
Simulink.SimulationData.Dataset
オブジェクトから要素または要素の集合を取得
説明
は、element
= get(dataset
,index
)Simulink.SimulationData.Dataset
オブジェクト dataset
内のインデックスに対応する要素を返します。関数 getElement
の構文と動作は関数 get
と同じです。
例
プログラムによる Dataset
オブジェクトおよび要素へのアクセス
モデル 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: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [1x1 timeseries]
信号データは、Simulink.SimulationData.Signal
オブジェクトの Values
プロパティに timeseries
オブジェクトとして格納されています。時間値は timeseries
オブジェクトの Time
プロパティにあります。信号値は Data
プロパティにあります。
el9.Values
timeseries Common Properties: Name: 'throttle' Time: [204508x1 double] TimeInfo: tsdata.timemetadata Data: [204508x1 double] DataInfo: tsdata.datametadata
el9.Values.Data
ans = 204508×1
10.0000
10.0028
10.0169
10.0500
10.1000
10.1500
10.2000
10.2500
10.2766
10.2766
⋮
インデックスによるデータセットの要素へのアクセス
モデル 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: [1x1 Simulink.SimulationData.BlockPath] PortType: 'inport' PortIndex: 1 Values: [1x1 timeseries]
名前によるデータセットの要素へのアクセス
モデル 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: [1x1 Simulink.SimulationData.BlockPath] PortType: 'inport' PortIndex: 1 Values: [1x1 timeseries]
関数 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.
cell 配列を使用したデータセットの要素へのアクセス
モデル 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.
Dataset
形式を使用してログ記録されたバス データへのアクセス
モデル 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: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [2x1 struct]
ログ データの値は Signal
オブジェクトの Values
プロパティに格納されています。バスの配列の場合、データは MATLAB® 構造体の配列としてログ記録されます。
get(ds,"Bus2").Values
ans=2×1 struct array with fields:
a
b
配列内の構造体のインデックスを使用して特定の構造体にアクセスできます。たとえば、Constant ブロック Constant6
と Constant7
からの信号の timeseries
オブジェクトを含む構造体にアクセスするには、インデックス 2
を使用します。
get(ds,"Bus2").Values(2)
ans = struct with fields:
a: [1x1 timeseries]
b: [1x1 timeseries]
構造体内の timeseries
オブジェクトにはドット表記を使用してアクセスします。たとえば、Constant6
ブロックからの信号の timeseries
オブジェクトにアクセスします。
get(ds,"Bus2").Values(2).a
timeseries Common Properties: Name: 'a' Time: [51x1 double] TimeInfo: tsdata.timemetadata Data: [51x1 double] DataInfo: tsdata.datametadata
信号値は Data
プロパティに格納されています。
get(ds,"Bus2").Values(2).a.Data
ans = 51×1
6
6
6
6
6
6
6
6
6
6
⋮
Bus2
をログ記録用にマークしていなかったとします。その場合も、Dataset
オブジェクトの要素 Bus3
を使用して Constant6
ブロックからの信号の信号値を取得できます。
get(ds,"Bus3").Values(2,2).a.Data
ans = 51×1
6
6
6
6
6
6
6
6
6
6
⋮
同様に、Dataset
オブジェクトの要素 topBus
を使用して Constant6
ブロックからの信号の信号値にアクセスすることもできます。
get(ds2,"topBus").Values.Bus3(2,2).a.Data
ans = 51×1
6
6
6
6
6
6
6
6
6
6
⋮
入力引数
dataset
— Dataset
オブジェクト
Simulink.SimulationData.Dataset
オブジェクト
要素を取得する Dataset
オブジェクト。Simulink.SimulationData.Dataset
オブジェクトとして指定します。
index
— 取得する要素のインデックス
正の整数
取得する要素のインデックス。正の整数として指定します。
elName
— 取得する Dataset
オブジェクトの要素の名前
string | 文字配列 | 1 つの文字ベクトルを含む cell 配列
取得する Dataset
オブジェクトの要素の名前。以下として指定します。
Dataset
オブジェクトの要素の名前を反映する string。Dataset
オブジェクトの要素の名前を反映する文字配列。Dataset
オブジェクトの要素の名前を反映する 1 つの文字ベクトルを含む cell 配列。1 つの要素を含む可能性のあるDataset
オブジェクトを返すためにこの形式を使用します。スクリプトを記述するときにこの形式を検討します。
代替方法
get
または getElement
を使用する代わりに、中かっこを使用してインデックス構文を効率化し、Dataset
オブジェクト内の要素にアクセスできます。インデックスは、変数の要素数以下の正の整数でなければなりません。たとえば、logsout
データセットの 2 番目の要素を取得します。
logsout{2}
また、関数 find
を使用して、データセットから要素または要素の集合を取得できます。
バージョン履歴
R2011a で導入
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)