Main Content

read

(不推荐)从 MDF 文件中读取通道数据

不推荐使用 read 函数,在以后的版本中可能会将其删除。请改用 mdfRead。请参阅兼容性注意事项

说明

示例

data = read(mdfObj) 从 MDF 文件对象 mdfObj 标识的 MDF 文件中读取所有通道的所有数据,并将输出赋给 data。如果文件数据是一个通道组,则输出是一个时间表;多个通道组以时间表的元胞数组形式返回,其中元胞数组索引对应于通道组编号。

示例

data = read(mdfObj,chanList) 读取在通道列表表 chanList 中指定的所有通道的数据。

示例

data = read(mdfObj,chanGroupIndex) 读取指定通道组中所有通道的数据。

示例

data = read(mdfObj,chanGroupIndex,chanName) 读取指定通道的数据。

示例

data = read(mdfObj,chanGroupIndex,chanName,startPosition)startPosition 指定的位置读取数据。

示例

data = read(mdfObj,chanGroupIndex,chanName,startPosition,endPosition) 读取从 startPositionendPosition 的指定范围的数据。

示例

data = read(___,Name=Value) 使用可选的名称-值对组指定某些函数行为。

示例

[data,time] = read(___,OutputFormat="Vector") 返回两个向量:一个通道数据向量和一个对应的时间戳向量。仅当 OutputFormat="Vector" 时,才支持这种带两个输出参量的语法形式。

示例

全部折叠

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

mdfObj = mdf("MDFFile.mf4");
data = read(mdfObj);

从第一个通道组中的指定通道读取原始数据,不应用任何转换规则。

mdfObj = mdf("MDFFile.mf4");
data = read(mdfObj,1,"Unsigned_UInt32_LE_Primary_Offset_0",Conversion="None");
data(1:4,:)
ans =

  4×1 timetable

    Time     Unsigned_UInt32_LE_Primary_Offset_0
    _____    __________________________________

    0 sec                    0
    1 sec                    1
    2 sec                    2 
    3 sec                    3

从 MDF 文件中读取指定为通道列表一部分的通道的所有可用数据。

mdfObj = mdf("MDFFile.mf4");
chanList = channelList(mdfObj) % Channel table
data = read(mdfObj,chanList(1:3,:)); % First 3 channels

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

mdfObj = mdf("MDFFile.mf4");
data = read(mdfObj,1,["Channel1","Channel2"]);

使用索引形式的 startPositionendPosition 指定数据范围,从 MDF 文件中读取指定范围内的数据。

mdfObj = mdf("MDFFile.mf4");
data = read(mdfObj,1,["Channel1","Channel2"],1,10);

使用时间值形式的 startPositionendPosition 指定数据范围,从 MDF 文件中读取指定范围内的数据。

mdfObj = mdf("MDFFile.mf4");
data = read(mdfObj,1,["Channel1","Channel2"],seconds(5.5),seconds(7.3));

从 MDF 文件中读取所有可用数据,返回数据和时间向量。

mdfObj = mdf("MDFFile.mf4");
[data,time] = read(mdfObj,1,"Channel1",OutputFormat="Vector");

从 MDF 文件中读取所有可用数据,返回时间序列数据。

mdfObj = mdf("MDFFile.mf4");
data = read(mdfObj,1,"Channel1",OutputFormat="TimeSeries");

channelList 函数标识的通道中读取数据。

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

mdfObj = mdf("File05.mf4");
chlist = channelList(mdfObj);
chlist(1:2,1:2) % Partial listing
  2×2 table

                ChannelName                 ChannelGroupNumber
    ____________________________________    __________________

    "Float_32_LE_Offset_64"                         2         
    "Float_64_LE_Primary_Offset_0"                  2

从列表中的第一个通道读取数据。

data = read(mdfObj,chlist{1,2},chlist{1,1});
data(1:5,:)
  5×1 timetable

      Time      Float_32_LE_Offset_64
    ________    _____________________

    0 sec                  5         
    0.01 sec             5.1         
    0.02 sec             5.2         
    0.03 sec             5.3         
    0.04 sec             5.4

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

将通道组 1 中的数据读入一个时间表。

mdfObj = mdf("File05.mf4");
TTout = read(mdfObj,1,IncludeMetadata=true);
TTout.Properties.CustomProperties
ans = 

CustomProperties with properties:

    ChannelGroupAcquisitionName: ""
            ChannelGroupComment: "Integer Types"
         ChannelGroupSourceInfo: [1×1 struct]
             ChannelDisplayName: [""    ""]
                 ChannelComment: [""    ""]
                    ChannelUnit: [""    ""]
                    ChannelType: [FixedLength    FixedLength]
                ChannelDataType: [IntegerSignedLittleEndian    IntegerUnsignedLittleEndian]
                 ChannelNumBits: [16 32]
           ChannelComponentType: [None    None]
         ChannelCompositionType: [None    None]
              ChannelSourceInfo: [1×2 struct]
              ChannelReadOption: [Numeric    Numeric]

输入参数

全部折叠

MDF 文件,指定为 MDF 文件对象。

示例: mdf("MDFFile.mf4")

通道列表,指定为表,其格式采用 channelList 函数返回的表格式。

示例: channelList()

数据类型: table

通道组的索引,指定为数值,用于标识要读取的通道组。

示例: 1

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

通道的名称,指定为字符串、字符向量或数组。chanName 标识通道组中一个通道的名称。使用一个字符向量元胞数组或字符串数组来标识多个通道。

示例: "Channel1"

数据类型: char | string | cell

通道数据的第一个位置,指定为数值或持续时间。startPosition 选项指定读取通道数据时的第一个位置。提供数值以指定索引位置;使用持续时间以指定时间位置。如果仅提供 startPosition 而没有提供 endPosition 选项,则返回该位置的数据值。当与 endPosition 结合使用以指定范围时,该函数将返回从 startPosition(包含此值)到 endPosition(不包含此值)范围的数据。

示例: 1

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

通道数据范围的最后位置,指定为数值或持续时间。endPosition 选项指定读取一定范围的通道数据时的最后一个位置。同时提供 startPositionendPosition 可指定检索一定范围的数据。读取该范围的数据时,该函数返回到 endPosition 为止(但不包含此值)的数据。提供数值以指定索引位置;使用持续时间以指定时间位置。

示例: 1000

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

名称-值参数

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

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

示例: Conversion="Numeric"

输出数据的格式,指定为字符串或字符向量。此选项根据下表格式化输出。

输出格式描述
"Timetable"

将来自一个或多个通道的时间表返回到一个输出变量中。这是同时从多个通道读取时唯一允许的格式。(默认值。)

注意:时间表格式包括 MDF 通道的变量。由于变量标题必须是有效的 MATLAB® 标识符,因此它们可能与 MDF 对象 ChannelNames 属性中的值不完全相同。变量标题是使用 matlab.lang.makeValidName 函数从属性派生的。原始通道名称位于 timetable 对象的 VariableDescriptions 属性中。

"Vector"返回来自一个通道的数值数据值的向量,以及时间值的向量(可选)。使用一个输出变量以仅返回数据,或使用两个输出变量以同时返回数据和时间戳的向量。
"TimeSeries"返回来自一个通道的数据的时间序列。

示例: "Vector"

数据类型: char | string

MDF 文件数据的转换选项,指定为 "Numeric""All""None"。默认使用 mdf 对象的 Conversion 属性中指定的值。此选项会覆盖该设置。

  • "Numeric" - 仅应用数值转换规则 (CC_Type 1-6)。采用非数值转换规则的数据作为原始的未转换的值导入。

  • "None" - 不要应用任何转换规则。所有数据都作为原始数据导入。

  • "All" - 应用所有数值和文本转换规则 (CC_Type 1-10)。

示例: Conversion="All"

数据类型: char | string

从 MDF 文件中读取其数据的同时读取通道组和通道元数据。默认值为 false。仅当 OutputFormat 指定为 "Timetable" 时,才能包含元数据。时间表不能为空。您可以访问 data.Properties.CustomProperties 中的元数据。

从一个包含多个通道的通道组中读取数据时,指定 IncludeMetadata=true 可能会影响函数性能。

示例: IncludeMetadata=true

数据类型: logical

输出参量

全部折叠

通道数据,根据 OutputFormat 选项值和通道组数量,以时间表、时间表元胞数组、双精度向量或时间序列形式返回。

通道数据时间,以双精度值元素向量的形式返回。仅当 OutputFormat="Vector" 时才返回时间向量。

版本历史记录

在 R2016b 中推出

全部展开