Main Content

mdfRead

从 MDF 文件中读取通道数据

自 R2023a 起

说明

示例

data = mdfRead(mdfFileName) 从指定的 MDF 文件中读取所有通道的所有数据,并将输出赋给元胞数组 data。输出元胞数组包含返回数据的每个通道组的时间表,其中元胞数组索引对应于返回通道组的序列。

data = mdfRead(___,Name=Value) 允许名称-值参量对特定通道和通道组进行过滤、请求元数据和应用其他选项。

示例

全部折叠

从 MDF 文件中读取所有可用数据。

data = mdfRead("VehicleData.mf4");
head(data{1}) % First timetable in returned cell array.
      time      EngineRPM    Brake    Throttle    Gear    ImpellerTorque    OutputTorque    TransmissionRPM    VehicleSpeed
    ________    _________    _____    ________    ____    ______________    ____________    _______________    ____________

    0 sec          1000        0           60      1          52.919           282.65                0                 0   
    0.04 sec     1383.3        0       59.946      1           101.4           532.63           13.593           0.30047   
    0.08 sec     1685.4        0       59.893      1          150.76           776.41           35.847            0.7924   
    0.12 sec     1907.2        0       59.839      1          193.42           973.15           65.768            1.4538   
    0.16 sec       2062        0       59.785      1          227.02           1117.6           101.53            2.2443   
    0.2 sec      2161.2        0       59.732      1          251.11           1212.8           141.45            3.1268   
    0.24 sec     2221.4        0       59.678      1          267.24           1264.3           183.86            4.0644   
    0.28 sec     2257.2        0       59.624      1          276.35           1271.2           227.25            5.0234   

读取原始数据而不应用任何转换规则。

dataraw = mdfRead("VehicleData.mf4",ReadRaw=true);

从 MDF 文件中读取指定通道名称的所有可用数据。

data = mdfRead("VehicleData.mf4",Channel=["*Torque" "*Rate"]);

通过使用索引指定开始和结束位置从 MDF 文件中读取一系列数据。

data = mdfRead("VehicleData.mf4",IndexRange=[65,128]);

基于指定的时间范围从 MDF 文件中读取一定范围内的数据。

data = mdfRead("VehicleData.mf4",TimeRange=seconds([0,30]));

从由 mdfChannelInfo 函数标识的通道读取数据。

获取通道表并显示其名称和组编号。

chanInfoTable = mdfChannelInfo("VehicleData.mf4",Channel=["*Torque","*Speed"]);
chanInfoTable(:,1:3) % Partial display.
ans = 
  3×3 table

          Name          GroupNumber    GroupNumSamples
    ________________    ___________    _______________

    "ImpellerTorque"         1               751
    "OutputTorque"           1               751
    "VehicleSpeed"           1               751

从指定通道读取数据。

data = mdfRead("VehicleData.mf4",Channel=chanInfoTable);
head(data{1}) % View top of data timetable.
      time      ImpellerTorque    OutputTorque    VehicleSpeed
    ________    ______________    ____________    ____________

    0 sec           52.919           282.65               0
    0.04 sec         101.4           532.63         0.30047
    0.08 sec        150.76           776.41          0.7924
    0.12 sec        193.42           973.15          1.4538   
    0.16 sec        227.02           1117.6          2.2443
    0.2 sec         251.11           1212.8          3.1268
    0.24 sec        267.24           1264.3          4.0644
    0.28 sec        276.35           1271.2          5.0234

将 MDF 文件中的数据以及通道组元数据和通道元数据一起读入一个时间表。

从 MDF 文件中读取所有数据及其元数据,然后查看第一个通道组的元数据。

dataGrp1 = mdfRead("VehicleData.mf4",IncludeMetadata=true);
dataGrp1{1}.Properties.CustomProperties
ans = 

CustomProperties with properties:

           ChannelGroupAcquisitionName: ""
                   ChannelGroupComment: "Simulation of an automatic transmission controller during passing maneuver."
                ChannelGroupSourceName: ""
                ChannelGroupSourcePath: ""
             ChannelGroupSourceComment: ""
                ChannelGroupSourceType: Unspecified
             ChannelGroupSourceBusType: Unspecified
    ChannelGroupSourceBusChannelNumber: 0
                    ChannelDisplayName: [""    ""    ""    ""    ""    ""    ""    ""]
                        ChannelComment: [""    ""    ""    ""    ""    ""    ""    ""]
                           ChannelUnit: ["rpm"    "ft*lbf"    "%"    ""    "ft*lbf"    "ft*lbf"    "rpm"    "mph"]
                           ChannelType: [FixedLength    FixedLength    FixedLength    FixedLength    FixedLength    FixedLength    …    ]
                       ChannelDataType: [RealLittleEndian    IntegerUnsignedLittleEndian    RealLittleEndian    …    ]
                        ChannelNumBits: [64 8 64 8 64 64 64 64]
                  ChannelComponentType: [None    None    None    None    None    None    None    None]
                ChannelCompositionType: [None    None    None    None    None    None    None    None]
                     ChannelSourceName: [""    ""    ""    ""    ""    ""    ""    ""]
                     ChannelSourcePath: [""    ""    ""    ""    ""    ""    ""    ""]
                  ChannelSourceComment: [""    ""    ""    ""    ""    ""    ""    ""]
                     ChannelSourceType: [Unspecified    Unspecified    Unspecified    Unspecified    Unspecified    Unspecified    …    ]
                  ChannelSourceBusType: [Unspecified    Unspecified    Unspecified    Unspecified    Unspecified    Unspecified    …    ]
         ChannelSourceBusChannelNumber: [0 0 0 0 0 0 0 0]
                     ChannelReadOption: [All    All    All    All    All    All    All    All]

输入参数

全部折叠

MDF 文件名(包括必要的完整或相对路径),指定为字符串或字符向量。您可以使用 URL 来指定远程服务器上的文件。

根据您要访问的位置,mdfFileName 可以采用以下形式之一。

位置

形式

当前文件夹或 MATLAB® 路径

要访问当前文件夹或 MATLAB 路径中的文件,请在 filename 中指定文件名(包括文件扩展名)。

示例:"myMdfFile.mf4"

其他文件夹

要访问当前文件夹以外的文件夹中的文件,请在 filename 中指定完整或相对路径名称。

示例:"C:\myFolder\myMdfFile.mf4"

示例:"\dataDir\myMdfFile.mf4"

远程位置

要访问远程位置的文件,filename 必须包含指定为统一资源定位器 (URL) 形式的文件的完整路径:

scheme://path_to_file/myMdfFile.mf4

根据远程位置,scheme 可以是下表中的值之一。

远程位置scheme
Amazon S3™s3
Windows Azure® Blob 存储wasb, wasbs
HDFS™hdfs

有关详细信息,请参阅处理远程数据

示例:"s3://bucketname/path_to_file/myMdfFile.mf4"

数据类型: string | char

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量后,但参量对组的顺序无关紧要。

在 R2021a 之前,需要使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: GroupNumber=2

对于一个组,通道组编号指定为数值标量;对于多个组,指定为数值向量。该函数返回仅在这些指定通道组中找到的通道的数据。如果未指定,则返回所有通道组的数据。

示例: GroupNumber=[1,2]

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

要从中返回数据的通道名称,指定为字符串或字符串数组,或者指定为字符向量或字符向量元胞数组。使用数组匹配多个通道名称中的任一个。通配符允许部分匹配。如果未指定,则返回所有通道的数据。

您还可以使用由 mdfChannelInfo 函数生成的表来指定通道。使用表指定通道时,会忽略 GroupNumber 选项。

示例: Channel=["*Rate","*Speed"]

数据类型: string | char | cell | table

返回绝对时间戳,指定为 truefalse。如果指定 true,则返回的时间表包含日期时间类型的绝对时间戳,绝对时间戳基于文件的初始时间戳计算。如果指定 false,则返回的时间表包含持续时间类型的相对时间戳,相对时间戳为从文件的初始时间戳起计的历时。默认值为 false,表示返回相对时间戳。

示例: AbsoluteTime=true

数据类型: logical

读取数据的间隔的开始时间和结束时间,指定为二元素向量。如果 AbsoluteTime=true,请将 TimeRange 指定为日期时间向量。如果 AbsoluteTime=false(默认值),请将 TimeRange 指定为持续时间向量。如果未指定,则读取所有数据采样。您无法将此选项与 IndexRange 结合使用。

示例: TimeRange=seconds([0,60])

数据类型: datetime | duration

要从中读取数据的间隔的起始索引和结束索引,指定为二元素向量。这些索引包含边界值。如果未指定,则读取所有数据采样。您无法将此选项与 TimeRange 结合使用。

示例: IndexRange=[65:128]

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

读取原始数据值,指定为 truefalse。如果指定 true,数据将读取为原始值。如果指定 false,数据将读取为物理值。默认值为 false

示例: ReadRaw=true

数据类型: logical

在结果中包括通道组元数据和通道元数据,指定为 truefalse。如果为 true,元数据将作为自定义属性添加到每个返回的时间表中。只有非空输出时间表才包含元数据。如果为 false,则不包括元数据。默认值为 false

由于 mdfRead 返回每个通道组的时间表,此通道组和此组中所有通道的元数据都作为自定义属性添加到时间表中。您可以通过 tt.Properties.CustomProperties 访问时间表 tt 自定义属性。

当包含元数据时,mdfRead 函数需要更长的时间来执行。

示例: IncludeMetadata=true

数据类型: logical

输出参量

全部折叠

通道数据,以时间表的元胞数组形式返回,每个组有一个对应的时间表。

限制

  • mdfRead 不支持 3 个以上维度的数组通道。

  • 不支持从嵌套的通道组合中读取。您可以从简单结构体通道或数组通道中读取,但无法从合成信号的结构体或数组中读取。

  • mdfRead 忽略失效位,因此没有无效采样的指示,也没有错误或警告。mdfRead 只是读入存储在 MDF 文件中记录位置的数据值。

  • mdfRead 不支持从具有部分转换规则的通道中读取。

版本历史记录

在 R2023a 中推出

全部展开