メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

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 規格で定義されたメタデータ フィールドのセットがあります。

この例では、TT1TT2 のデータが、新しい MDF ファイルのチャネル グループ 1 と 2 にそれぞれ書き込まれます。3 つの階層レベルのいずれでもメタデータをカスタマイズする必要がない場合は、このワークフローを使用する必要があります。

MDF ファイルに書き込むときにメタデータをカスタマイズする必要がある場合は、例 timetable データをMDFファイルに書き込む際にメタデータをカスタマイズする の高度なワークフローを使用します。

ワークスペースに timetable を読み込む

timetable 変数 TT1TT2MDFTimetables.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 つのチャネル グループのメタデータを調べます。AcquisitionNameComment などのメタデータ フィールドにデフォルト値が割り当てられました。NumSamplesDataSizeSorted などの他のフィールドはデータに依存します。

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 の変数はそれぞれのデータ チャネルに書き込まれました。

メタデータ フィールド TypeDataType、および NumBits は、mdfWrite によって対応する timetable 変数に保存されたデータから取得されました。たとえば、TT1uint8_data という変数には 8 ビットの符号なし整数が含まれているため、チャネルの Typeasam.mdf.ChannelType.FixedLength (0)、DataTypeasam.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 内のチャネルのメタデータを調べます。メタデータ フィールド TypeDataType、および NumBits も、mdfWrite によって対応する timetable 変数に保存されたデータから派生されました。

  • TT2の変数fixed_length_string_datafixed_length_byte_array_dataのデータサンプルは固定長なので、これら2つのチャネルのTypeasam.mdf.ChannelType.FixedLength(0)になります。変数variable_length_string_datavariable_length_byte_array_dataには可変長のデータサンプルが含まれているので、これら2つのチャネルのTypeasam.mdf.ChannelType.VariableLengthです(1)。

  • 文字列データを持つ2つの変数fixed_length_string_datavariable_length_string_dataの場合、DataTypeasam.mdf.ChannelDataType.StringASCIIです(6)。バイト配列データを持つ2つの変数fixed_length_byte_array_datavariable_length_byte_array_dataの場合、DataTypeasam.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]}