Main Content

Access MDF-Files

This example shows you how to open MDF-files and access information about the file and its contents.

Open an MDF-File

Open an MDF-file by specifying the name of the target file. Many basic details about the file are provided. This sample file was created using Vector CANape.

m = mdf("CANapeBasic.MF4")
m = 
  MDF with properties:

   File Details
                 Name: 'CANapeBasic.MF4'
                 Path: '/tmp/Bdoc21a_1606923_197022/tpb1791c7c/vnt-ex51113426/CANapeBasic.MF4'
               Author: 'Otmar Schneider'
           Department: 'PMC @ Vector Informatik GmbH'
              Project: 'Demo'
              Subject: 'XCPSim'
              Comment: 'Example file created with Vector CANape'
              Version: '4.10'
             DataSize: 176545
     InitialTimestamp: 2016-04-21 14:27:17.000010630

   Creator Details
    ProgramIdentifier: 'MCD14.02'
              Creator: [1x1 struct]

   File Contents
           Attachment: [0x1 struct]
         ChannelNames: {2x1 cell}
         ChannelGroup: [1x2 struct]

   Options
           Conversion: Numeric

View File Creation Details

Information about the originating tool of the MDF-file is found in the Creator property.

m.Creator
ans = struct with fields:
     VendorName: 'Vector Informatik GmbH'
       ToolName: 'CANape'
    ToolVersion: '14.0.20.2386'
       UserName: 'visosr'
        Comment: 'created'

View Channel Group Details

Data in an MDF-file is stored in channels contained within channel groups. This sample file contains two channel groups.

m.ChannelGroup(1)
ans = struct with fields:
    AcquisitionName: '10 ms'
            Comment: '10 ms'
         NumSamples: 1993
           DataSize: 153461
             Sorted: 1
            Channel: [74x1 struct]

m.ChannelGroup(2)
ans = struct with fields:
    AcquisitionName: '100ms'
            Comment: '100ms'
         NumSamples: 199
           DataSize: 23084
             Sorted: 1
            Channel: [46x1 struct]

View Channel Details

Within a channel group, details about each channel are stored.

m.ChannelGroup(1).Channel(1)
ans = struct with fields:
                  Name: 'Counter_B4'
           DisplayName: ''
    ExtendedNamePrefix: 'XCPsim'
           Description: 'Single bit demo signal (bit from a byte shifting)'
               Comment: 'Single bit demo signal (bit from a byte shifting)'
                  Unit: ''
                  Type: FixedLength
              DataType: IntegerUnsignedLittleEndian
               NumBits: 1
         ComponentType: None
       CompositionType: None
        ConversionType: ValueToText

Quickly Access Channels Names

The ChannelNames property allows quick access to find specific channels within the various channel groups.

m.ChannelNames
ans=2×1 cell array
    {74x1 cell}
    {46x1 cell}

m.ChannelNames{1}
ans = 74x1 cell
    {'Counter_B4'               }
    {'Counter_B5'               }
    {'Counter_B6'               }
    {'Counter_B7'               }
    {'PWM'                      }
    {'PWM_Level'                }
    {'PWMFiltered'              }
    {'Triangle'                 }
    {'map1_8_8_uc_measure[0][0]'}
    {'map1_8_8_uc_measure[0][1]'}
    {'map1_8_8_uc_measure[0][2]'}
    {'map1_8_8_uc_measure[0][3]'}
    {'map1_8_8_uc_measure[0][4]'}
    {'map1_8_8_uc_measure[0][5]'}
    {'map1_8_8_uc_measure[0][6]'}
    {'map1_8_8_uc_measure[0][7]'}
    {'map1_8_8_uc_measure[1][0]'}
    {'map1_8_8_uc_measure[1][1]'}
    {'map1_8_8_uc_measure[1][2]'}
    {'map1_8_8_uc_measure[1][3]'}
    {'map1_8_8_uc_measure[1][4]'}
    {'map1_8_8_uc_measure[1][5]'}
    {'map1_8_8_uc_measure[1][6]'}
    {'map1_8_8_uc_measure[1][7]'}
    {'map1_8_8_uc_measure[2][0]'}
    {'map1_8_8_uc_measure[2][1]'}
    {'map1_8_8_uc_measure[2][2]'}
    {'map1_8_8_uc_measure[2][3]'}
    {'map1_8_8_uc_measure[2][4]'}
    {'map1_8_8_uc_measure[2][5]'}
      ⋮

Find Channels in an MDF-File

The channelList function is available to quickly and easily query for channel details within an MDF-file. It returns a case-insensitive, partial match to the provided input by default, but an exact match can also be used.

channelList(m, "PWM")
ans=3×9 table
     ChannelName     ChannelGroupNumber    ChannelGroupNumSamples    ChannelGroupAcquisitionName    ChannelGroupComment    ChannelDisplayName    ChannelUnit                    ChannelComment                                   ChannelDescription               
    _____________    __________________    ______________________    ___________________________    ___________________    __________________    ___________    ______________________________________________    ________________________________________________

    "PWM"                    1                      1993                        10 ms                      10 ms                   ""            <undefined>    Pulse width signal from PWM_level and Triangle    "Pulse width signal from PWM_level and Triangle"
    "PWM_Level"              1                      1993                        10 ms                      10 ms                   ""            <undefined>    <undefined>                                       ""                                              
    "PWMFiltered"            1                      1993                        10 ms                      10 ms                   ""            <undefined>    Low pass filtered PWM signal                      "Low pass filtered PWM signal"                  

channelList(m, "PWM", "ExactMatch", true)
ans=1×9 table
    ChannelName    ChannelGroupNumber    ChannelGroupNumSamples    ChannelGroupAcquisitionName    ChannelGroupComment    ChannelDisplayName    ChannelUnit                    ChannelComment                                   ChannelDescription               
    ___________    __________________    ______________________    ___________________________    ___________________    __________________    ___________    ______________________________________________    ________________________________________________

       "PWM"               1                      1993                        10 ms                      10 ms                   ""            <undefined>    Pulse width signal from PWM_level and Triangle    "Pulse width signal from PWM_level and Triangle"

Close the File

Close access to the MDF-file by clearing its variable from the workspace.

clear m