このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
MDF データストア入門
この例では、Vehicle Network Toolbox ™ の MDF データストア機能を使用して、複数の MDF ファイルのコレクションにまたがるデータ セットを迅速かつ効率的に処理する方法を示します。このワークフローは、使用可能なメモリに収まらないほど多くのデータがある場合にも役立ちます。
データストア内のMDFファイルにアクセスする
複数のテスト シーケンスから記録された情報を表す MDF ファイルのコレクションを見つけます。MDF データストアによってセットとして使用される MDF ファイルは、同じチャネル グループとチャネル コンテンツ構造を持つ必要があることに注意してください。
dir("File*.mf4")File01.mf4 File02.mf4 File03.mf4 File04.mf4 File05.mf4
MDFデータストアを作成する
MDF ファイルのコレクションを含むフォルダーの場所を選択して、MDF データストアを作成します。この場合、現在の作業ディレクトリ内のすべてのファイルを対象とします。
mds = mdfDatastore(pwd)
mds =
MDFDatastore with properties:
Datastore Details
Files: {
'/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex10761765/File01.mf4';
'/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex10761765/File02.mf4';
'/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex10761765/File03.mf4'
... and 2 more
}
ChannelGroups:
GroupNumber AcquisitionName Comment ... and 10 more columns
___________ _______________ _____________
1 <undefined> Integer Types
2 <undefined> Float Types
Channels:
Name GroupNumber DisplayName ... and 17 more columns
_________________ ___________ ___________
"Float_32_LE" 2 ""
"Float_64_LE" 2 ""
"Signed_Int16_LE" 1 ""
... and 3 more rows
Options
SelectedChannelNames: {
'Signed_Int16_LE';
'Unsigned_UInt32_LE';
'time'
}
SelectedChannelGroupNumber: 1
ReadSize: "file"
ReadRaw: 0
ValidityRule: "include"
IncludeEvents: 1
MDFデータストアを構成する
複数のオプションにより、MDF ファイルから読み取るデータと読み取りの実行方法を制御できます。この場合、最初のチャネル グループがデフォルトで使用されます。データストアでは一度に 1 つのチャネル グループのみ選択できることに注意してください。選択したチャネル グループ内の特定のチャネルを指定して読み取ることもできます。この場合、すべてのチャネルがデフォルトで読み取られます。
mds.SelectedChannelGroupNumber
ans = 1
mds.SelectedChannelNames
ans = 3×1 string
"Signed_Int16_LE"
"Unsigned_UInt32_LE"
"time"
MDF データストアのプレビュー
preview 関数を使用すると、ファイル セットで使用可能なデータを簡単に表示できます。プレビューでは、データストアの最初のファイルから常に最大 8 つのデータ ポイントが返されます。
preview(mds)
ans=8×2 timetable
time Signed_Int16_LE Unsigned_UInt32_LE
_____ _______________ __________________
0 sec 0 0
1 sec 1 1
2 sec 2 2
3 sec 3 3
4 sec 4 4
5 sec 5 5
6 sec 6 6
7 sec 7 7
MDFデータストア内のすべてのデータを読み取る
readall 関数を使用すると、1 回の呼び出しでデータ全体を読み取ることができます。これは、データ セットが使用可能なメモリに収まる場合に、多数のファイルから読み取る効率的な方法です。readall を実行すると、データストアはデータ セットの先頭にリセットされます。
data = readall(mds); data(1:5,:)
ans=5×2 timetable
time Signed_Int16_LE Unsigned_UInt32_LE
_____ _______________ __________________
0 sec 0 0
1 sec 1 1
2 sec 2 2
3 sec 3 3
4 sec 4 4
MDF データストア内のデータのサブセットを読み取る
read 関数を使用して、データストアからデータのサブセットを取得できます。サブセットのサイズは、MDF データストア オブジェクトの ReadSize プロパティによって決まります。デフォルトでは、ファイル全体のデータが 1 回の呼び出しで読み取られます。データストアの威力は、ファイル セット内の複数のファイルを順番に読み取ることによって発揮されます。読み取ると、すべてのファイルのすべてのデータが読み取られるまで、データストアは自動的に 1 つのファイルから次のファイルにブリッジします。
for ii = 1:3 data = read(mds); whos("data") data(1:5,:) end
Name Size Bytes Class Attributes data 10000x2 246364 timetable
ans=5×2 timetable
time Signed_Int16_LE Unsigned_UInt32_LE
_____ _______________ __________________
0 sec 0 0
1 sec 1 1
2 sec 2 2
3 sec 3 3
4 sec 4 4
Name Size Bytes Class Attributes data 10000x2 246364 timetable
ans=5×2 timetable
time Signed_Int16_LE Unsigned_UInt32_LE
_____ _______________ __________________
0 sec 0 0
1 sec 1 1
2 sec 2 2
3 sec 3 3
4 sec 4 4
Name Size Bytes Class Attributes data 10000x2 246364 timetable
ans=5×2 timetable
time Signed_Int16_LE Unsigned_UInt32_LE
_____ _______________ __________________
0 sec 0 0
1 sec 1 1
2 sec 2 2
3 sec 3 3
4 sec 4 4
MDFデータストアをリセット
いつでも、reset 関数を呼び出して、データ セットの先頭からやり直すことができます。
reset(mds)
MDF データストアから読み取るレコード数を設定する
ReadSize プロパティを使用して、各呼び出しで読み取るデータの量を指定できます。ReadSize は、固定数のデータ ポイントを読み取るための数値として指定できます。ReadSize を使用すると、使用可能なメモリよりも大きいデータ セットがある場合に、メモリにロードされるデータの量を制御できます。処理のオーバーヘッドを削減し、パフォーマンスを向上させるために、メモリに収まる程度に小さく、かつ可能な限り大きいカスタム読み取りサイズを使用することをお勧めします。
mds.ReadSize = 5
mds =
MDFDatastore with properties:
Datastore Details
Files: {
'/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex10761765/File01.mf4';
'/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex10761765/File02.mf4';
'/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex10761765/File03.mf4'
... and 2 more
}
ChannelGroups:
GroupNumber AcquisitionName Comment ... and 10 more columns
___________ _______________ _____________
1 <undefined> Integer Types
2 <undefined> Float Types
Channels:
Name GroupNumber DisplayName ... and 17 more columns
_________________ ___________ ___________
"Float_32_LE" 2 ""
"Float_64_LE" 2 ""
"Signed_Int16_LE" 1 ""
... and 3 more rows
Options
SelectedChannelNames: {
'Signed_Int16_LE';
'Unsigned_UInt32_LE';
'time'
}
SelectedChannelGroupNumber: 1
ReadSize: 5
ReadRaw: 0
ValidityRule: "include"
IncludeEvents: 1
for ii = 1:3 data = read(mds) end
data=5×2 timetable
time Signed_Int16_LE Unsigned_UInt32_LE
_____ _______________ __________________
0 sec 0 0
1 sec 1 1
2 sec 2 2
3 sec 3 3
4 sec 4 4
data=5×2 timetable
time Signed_Int16_LE Unsigned_UInt32_LE
_____ _______________ __________________
5 sec 5 5
6 sec 6 6
7 sec 7 7
8 sec 8 8
9 sec 9 9
data=5×2 timetable
time Signed_Int16_LE Unsigned_UInt32_LE
______ _______________ __________________
10 sec 10 10
11 sec 11 11
12 sec 12 12
13 sec 13 13
14 sec 14 14
MDF データストアから読み取る時間範囲を構成する
経過時間ごとにデータ ポイントを読み取るために、期間として ReadSize を指定することもできます。読み取りタイプが変更されると、データストアはデータセットの先頭にリセットされることに注意してください。
mds.ReadSize = seconds(5)
mds =
MDFDatastore with properties:
Datastore Details
Files: {
'/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex10761765/File01.mf4';
'/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex10761765/File02.mf4';
'/tmp/Bdoc25a_2864802_1974203/tp6f7be44e/vnt-ex10761765/File03.mf4'
... and 2 more
}
ChannelGroups:
GroupNumber AcquisitionName Comment ... and 10 more columns
___________ _______________ _____________
1 <undefined> Integer Types
2 <undefined> Float Types
Channels:
Name GroupNumber DisplayName ... and 17 more columns
_________________ ___________ ___________
"Float_32_LE" 2 ""
"Float_64_LE" 2 ""
"Signed_Int16_LE" 1 ""
... and 3 more rows
Options
SelectedChannelNames: {
'Signed_Int16_LE';
'Unsigned_UInt32_LE';
'time'
}
SelectedChannelGroupNumber: 1
ReadSize: 5 sec
ReadRaw: 0
ValidityRule: "include"
IncludeEvents: 1
for ii = 1:3 data = read(mds) end
data=6×2 timetable
time Signed_Int16_LE Unsigned_UInt32_LE
_____ _______________ __________________
0 sec 0 0
1 sec 1 1
2 sec 2 2
3 sec 3 3
4 sec 4 4
5 sec 5 5
data=11×2 timetable
time Signed_Int16_LE Unsigned_UInt32_LE
______ _______________ __________________
0 sec 0 0
1 sec 1 1
2 sec 2 2
3 sec 3 3
4 sec 4 4
5 sec 5 5
6 sec 6 6
7 sec 7 7
8 sec 8 8
9 sec 9 9
10 sec 10 10
data=16×2 timetable
time Signed_Int16_LE Unsigned_UInt32_LE
______ _______________ __________________
0 sec 0 0
1 sec 1 1
2 sec 2 2
3 sec 3 3
4 sec 4 4
5 sec 5 5
6 sec 6 6
7 sec 7 7
8 sec 8 8
9 sec 9 9
10 sec 10 10
11 sec 11 11
12 sec 12 12
13 sec 13 13
14 sec 14 14
15 sec 15 15
MDFファイルを閉じる
ワークスペースから MDF データストア変数をクリアして、MDF ファイルへのアクセスを閉じます。
clear mds