このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
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]}