このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
timetable データを MDF ファイルに書き込む方法
この例では、timetable データを MDF ファイルに書き込む方法を示します。この例で使用される MAT ファイル MDFTimetables.mat
には 2 つの timetable が含まれています。
timetable
TT1
には、uint8、uint16、uint32、uint64、int8、int16、int32、int64、single、double などの数値データ型の変数があります。timetable
TT2
には、固定長データと可変長データの両方を含む、文字列およびバイト配列データ型の変数があります。
はじめに
ASAM MDF ファイルの構造を表す簡略化されたモデルは、ファイル、チャネル グループ、およびチャネルで構成される 3 レベルの階層です。ファイルは複数のチャネル グループで構成され、チャネル グループは複数のチャネルで構成されます。
MDF ファイルのコンテンツには、データとメタデータという 2 つの重要な要素があります。
MDF ファイルに書き込まれる信号またはチャネル データは、通常、取得または計算されます。自動車アプリケーションの一般的な信号には、センサー データ、ECU 内部の変数/状態、車載ネットワーク内のバス トラフィック、または内部で計算された値などがあります。ほとんどのアプリケーションでは、チャネル グループのすべてのチャネルのデータは時間によって同期されますが、角度、距離、またはインデックスによって同期することもできます。まれに、同期ドメインが存在しないか、複数の同期ドメインが存在する場合があります。現在、MATLAB ® の MDF 関数は、時間による 1 つの同期ドメインのみをサポートしています。
メタデータは、測定環境に関する追加の説明情報です。これらは、ファイル、チャネル グループ、チャネルの 3 つの階層レベルに適用できます。各レベルには、ASAM MDF 規格で定義されたメタデータ フィールドのセットがあります。
この例では、TT1
と TT2
のデータが、新しい MDF ファイルのチャネル グループ 1 と 2 にそれぞれ書き込まれます。3 つの階層レベルのいずれでもメタデータをカスタマイズする必要がない場合は、このワークフローを使用する必要があります。
MDF ファイルに書き込むときにメタデータをカスタマイズする必要がある場合は、例 timetable データをMDFファイルに書き込む際にメタデータをカスタマイズする の高度なワークフローを使用します。
ワークスペースに timetable を読み込む
timetable 変数 TT1
と TT2
を MDFTimetables.mat
からワークスペースに読み込みます。
load("MDFTimetables.mat")
timetable データを新しい MDF ファイルに直接書き込む
入力引数としてターゲット MDF ファイル名と timetable 変数 TT1
を指定して、mdfWrite
関数を使用します。対象ファイル TimetableBasic.mf4
はまだ存在しないため、関数はファイルを自動的に作成し、新しく作成されたファイルのパスを通知する警告を表示します。TT1
のデータは、ファイルの最初の使用可能なチャネル グループ インデックスに書き込まれます。TimetableBasic.mf4
は新しく作成されたファイルなので、チャネル グループ 1 になります。
mdfWrite("TimetableBasic.mf4", TT1)
Warning: Specified target file did not exist. Created file: /tmp/Bdoc25a_2864802_1971459/tpcbc94420/vnt-ex65847646/TimetableBasic.mf4
mdfWrite
を再度呼び出して、TT2
を次の使用可能なチャネル グループ インデックス 2 に書き込みます。
mdfWrite("TimetableBasic.mf4", TT2)
デフォルトのファイルメタデータを調べる
このワークフローを使用すると、MDF ファイルの作成時に、mdfWrite
によってファイル メタデータのデフォルト値が適用されました。TimetableBasic.mf4
のファイル メタデータを調べるには、MDF ファイル名を指定して mdfInfo
を呼び出します。
info = mdfInfo("TimetableBasic.mf4")
info = MDFInfo with properties: File Details Name: "TimetableBasic.mf4" Path: "/tmp/Bdoc25a_2864802_1971459/tpcbc94420/vnt-ex65847646/TimetableBasic.mf4" Author: "" Department: "" Project: "" Subject: "" Comment: "" Version: "4.20" InitialTimestamp: 2025-02-01 19:16:43.000000000 Creator Details ProgramIdentifier: "MATLAB" CreatorVendorName: "The MathWorks, Inc." CreatorToolName: "MATLAB" CreatorToolVersion: "25.1.0.2847070 (R2025a) Prerelease Update 3" CreatorUserName: "" CreatorComment: "" File Contents Attachment: [0×7 table] ChannelGroupCount: 2 Event: [0×8 eventtable]
チャネルグループのメタデータを調べる
mdfChannelGroupInfo
を使用して TimetableBasic.mf4
に書き込まれた 2 つのチャネル グループのメタデータを調べます。AcquisitionName
や Comment
などのメタデータ フィールドにデフォルト値が割り当てられました。NumSamples
、DataSize
、Sorted
などの他のフィールドはデータに依存します。
chanGrpInfo = mdfChannelGroupInfo("TimetableBasic.mf4")
chanGrpInfo=2×13 table
GroupNumber AcquisitionName Comment NumSamples DataSize Sorted SourceName SourcePath SourceComment SourceType SourceBusType SourceBusChannelNumber SourceSimulated
___________ _______________ ___________ __________ ________ ______ ___________ ___________ _____________ ___________ _____________ ______________________ _______________
1 <undefined> <undefined> 100 5000 true <undefined> <undefined> <undefined> Unspecified Unspecified 0 false
2 <undefined> <undefined> 10 340 true <undefined> <undefined> <undefined> Unspecified Unspecified 0 false
チャネルのメタデータを調べる
mdfChannelInfo
を使用して、チャネル グループ 1 内のチャネルのメタデータを調べます。追加のメタデータも表示するには、AdditionalMetadata
オプションを true
として指定します。
timetable の行時間は時間チャネルに書き込まれ、timetable の変数はそれぞれのデータ チャネルに書き込まれました。
メタデータ フィールド Type
、DataType
、および NumBits
は、mdfWrite
によって対応する timetable 変数に保存されたデータから取得されました。たとえば、TT1
の uint8_data
という変数には 8 ビットの符号なし整数が含まれているため、チャネルの Type
は asam.mdf.ChannelType.FixedLength
(0)、DataType
は asam.mdf.ChannelDataType.IntegerUnsignedLittleEndian
(0)、NumBits
は 8 になります。
その他のメタデータ フィールドには、mdfWrite
によってデフォルト値が割り当てられました。時間チャネルの場合、Unit
は秒であることがわかっているので、値 's'
が割り当てられました。
chanGrp1Info = mdfChannelInfo("TimetableBasic.mf4", GroupNumber=1, AdditionalMetadata=true)
chanGrp1Info=11×25 table
Name GroupNumber GroupNumSamples GroupAcquisitionName GroupComment GroupSourceName GroupSourcePath DisplayName Unit Comment ExtendedNamePrefix SourceName SourcePath Type SyncType DataType NumBits ComponentType CompositionType ConversionType SourceComment SourceType SourceBusType SourceBusChannelNumber SourceSimulated
_____________ ___________ _______________ ____________________ ____________ _______________ _______________ ___________ ___________ ___________ __________________ ___________ ___________ ___________ ________ ___________________________ _______ _____________ _______________ ______________ _____________ ___________ _____________ ______________________ _______________
"Time" 1 100 <undefined> <undefined> <undefined> <undefined> "" s <undefined> <undefined> <undefined> <undefined> Master Time RealLittleEndian 64 None None Unspecified "" Unspecified Unspecified 0 false
"double_data" 1 100 <undefined> <undefined> <undefined> <undefined> "" <undefined> <undefined> <undefined> <undefined> <undefined> FixedLength None RealLittleEndian 64 None None Unspecified "" Unspecified Unspecified 0 false
"int16_data" 1 100 <undefined> <undefined> <undefined> <undefined> "" <undefined> <undefined> <undefined> <undefined> <undefined> FixedLength None IntegerSignedLittleEndian 16 None None Unspecified "" Unspecified Unspecified 0 false
"int32_data" 1 100 <undefined> <undefined> <undefined> <undefined> "" <undefined> <undefined> <undefined> <undefined> <undefined> FixedLength None IntegerSignedLittleEndian 32 None None Unspecified "" Unspecified Unspecified 0 false
"int64_data" 1 100 <undefined> <undefined> <undefined> <undefined> "" <undefined> <undefined> <undefined> <undefined> <undefined> FixedLength None IntegerSignedLittleEndian 64 None None Unspecified "" Unspecified Unspecified 0 false
"int8_data" 1 100 <undefined> <undefined> <undefined> <undefined> "" <undefined> <undefined> <undefined> <undefined> <undefined> FixedLength None IntegerSignedLittleEndian 8 None None Unspecified "" Unspecified Unspecified 0 false
"single_data" 1 100 <undefined> <undefined> <undefined> <undefined> "" <undefined> <undefined> <undefined> <undefined> <undefined> FixedLength None RealLittleEndian 32 None None Unspecified "" Unspecified Unspecified 0 false
"uint16_data" 1 100 <undefined> <undefined> <undefined> <undefined> "" <undefined> <undefined> <undefined> <undefined> <undefined> FixedLength None IntegerUnsignedLittleEndian 16 None None Unspecified "" Unspecified Unspecified 0 false
"uint32_data" 1 100 <undefined> <undefined> <undefined> <undefined> "" <undefined> <undefined> <undefined> <undefined> <undefined> FixedLength None IntegerUnsignedLittleEndian 32 None None Unspecified "" Unspecified Unspecified 0 false
"uint64_data" 1 100 <undefined> <undefined> <undefined> <undefined> "" <undefined> <undefined> <undefined> <undefined> <undefined> FixedLength None IntegerUnsignedLittleEndian 64 None None Unspecified "" Unspecified Unspecified 0 false
"uint8_data" 1 100 <undefined> <undefined> <undefined> <undefined> "" <undefined> <undefined> <undefined> <undefined> <undefined> FixedLength None IntegerUnsignedLittleEndian 8 None None Unspecified "" Unspecified Unspecified 0 false
同様に、チャネル グループ 2 内のチャネルのメタデータを調べます。メタデータ フィールド Type
、DataType
、および NumBits
も、mdfWrite
によって対応する timetable 変数に保存されたデータから派生されました。
TT2
の変数fixed_length_string_data
とfixed_length_byte_array_data
のデータサンプルは固定長なので、これら2つのチャネルのType
はasam.mdf.ChannelType.FixedLength
(0)になります。変数variable_length_string_data
とvariable_length_byte_array_data
には可変長のデータサンプルが含まれているので、これら2つのチャネルのType
はasam.mdf.ChannelType.VariableLength
です(1)。文字列データを持つ2つの変数
fixed_length_string_data
とvariable_length_string_data
の場合、DataType
はasam.mdf.ChannelDataType.StringASCII
です(6)。バイト配列データを持つ2つの変数fixed_length_byte_array_data
とvariable_length_byte_array_data
の場合、DataType
はasam.mdf.ChannelDataType.ByteArray
です(10)。固定長チャネルの
NumBits
はデータから導出されます。可変長チャネルの場合、NumBits
のデフォルト値は 64 です。
chanGrp2Info = mdfChannelInfo("TimetableBasic.mf4", GroupNumber=2, AdditionalMetadata=true)
chanGrp2Info=5×25 table
Name GroupNumber GroupNumSamples GroupAcquisitionName GroupComment GroupSourceName GroupSourcePath DisplayName Unit Comment ExtendedNamePrefix SourceName SourcePath Type SyncType DataType NumBits ComponentType CompositionType ConversionType SourceComment SourceType SourceBusType SourceBusChannelNumber SourceSimulated
_________________________________ ___________ _______________ ____________________ ____________ _______________ _______________ ___________ ___________ ___________ __________________ ___________ ___________ ______________ ________ ________________ _______ _____________ _______________ ______________ _____________ ___________ _____________ ______________________ _______________
"Time" 2 10 <undefined> <undefined> <undefined> <undefined> "" s <undefined> <undefined> <undefined> <undefined> Master Time RealLittleEndian 64 None None Unspecified "" Unspecified Unspecified 0 false
"fixed_length_byte_array_data" 2 10 <undefined> <undefined> <undefined> <undefined> "" <undefined> <undefined> <undefined> <undefined> <undefined> FixedLength None ByteArray 40 None None Unspecified "" Unspecified Unspecified 0 false
"fixed_length_string_data" 2 10 <undefined> <undefined> <undefined> <undefined> "" <undefined> <undefined> <undefined> <undefined> <undefined> FixedLength None StringASCII 40 None None Unspecified "" Unspecified Unspecified 0 false
"variable_length_byte_array_data" 2 10 <undefined> <undefined> <undefined> <undefined> "" <undefined> <undefined> <undefined> <undefined> <undefined> VariableLength None ByteArray 64 None None Unspecified "" Unspecified Unspecified 0 false
"variable_length_string_data" 2 10 <undefined> <undefined> <undefined> <undefined> "" <undefined> <undefined> <undefined> <undefined> <undefined> VariableLength None StringASCII 64 None None Unspecified "" Unspecified Unspecified 0 false
データを検証する
データがファイルに正常に書き込まれたことを確認するには、mdfRead
を使用して両方のチャネル グループからデータを読み取り、結果を調べます。
data = mdfRead("TimetableBasic.mf4")
data=2×1 cell array
{100×10 timetable}
{ 10×4 timetable}
chanGrp1Data = data{1}
chanGrp1Data=100×10 timetable
Time uint8_data uint16_data uint32_data uint64_data int8_data int16_data int32_data int64_data single_data double_data
_______ __________ ___________ ___________ ___________ _________ __________ __________ __________ ___________ ___________
0 sec 0 200 600 1400 -99 -198 -396 -794 -9.8 -19.6
0.1 sec 2 204 608 1416 -97 -194 -388 -778 -9.6 -19.2
0.2 sec 4 208 616 1432 -95 -190 -380 -762 -9.4 -18.8
0.3 sec 6 212 624 1448 -93 -186 -372 -746 -9.2 -18.4
0.4 sec 8 216 632 1464 -91 -182 -364 -730 -9 -18
0.5 sec 10 220 640 1480 -89 -178 -356 -714 -8.8 -17.6
0.6 sec 12 224 648 1496 -87 -174 -348 -698 -8.6 -17.2
0.7 sec 14 228 656 1512 -85 -170 -340 -682 -8.4 -16.8
0.8 sec 16 232 664 1528 -83 -166 -332 -666 -8.2 -16.4
0.9 sec 18 236 672 1544 -81 -162 -324 -650 -8 -16
1 sec 20 240 680 1560 -79 -158 -316 -634 -7.8 -15.6
1.1 sec 22 244 688 1576 -77 -154 -308 -618 -7.6 -15.2
1.2 sec 24 248 696 1592 -75 -150 -300 -602 -7.4 -14.8
1.3 sec 26 252 704 1608 -73 -146 -292 -586 -7.2 -14.4
1.4 sec 28 256 712 1624 -71 -142 -284 -570 -7 -14
1.5 sec 30 260 720 1640 -69 -138 -276 -554 -6.8 -13.6
⋮
chanGrp2Data = data{2}
chanGrp2Data=10×4 timetable
Time fixed_length_string_data fixed_length_byte_array_data variable_length_string_data variable_length_byte_array_data
_____ ________________________ ____________________________ ___________________________ _______________________________
0 sec "abcd" {[255 255 255 255 255]} "zero" {[ 255 255]}
1 sec "efgh" {[ 18 35 52 69 86]} "one" {[ 18 35 52 69 86]}
2 sec "ijkl" {[ 0 1 2 3 4]} "two" {[ 0 1 2 3 4 5 6 7]}
3 sec "mnop" {[ 4 3 2 1 0]} "three" {[ 4 3 2 1 0]}
4 sec "qrst" {[255 254 253 252 251]} "four" {[ 253 252 251]}
5 sec "uvwx" {[250 249 248 247 246]} "five" {[250 249 248 247 246]}
6 sec "yzAB" {[245 244 243 242 241]} "six" {[245 244 243 242 241]}
7 sec "CDEF" {[240 239 238 237 236]} "seven" {[ 240 238 236]}
8 sec "GHIJ" {[235 234 233 232 231]} "eight" {[ 235 233 231]}
9 sec "KLMN" {[255 255 255 255 255]} "nine" {[255 255 255 255 255]}