read
(不推荐)从 MDF 文件中读取通道数据
语法
说明
读取指定通道组中所有通道的数据。data
= read(mdfObj
,chanGroupIndex
)
读取指定通道的数据。data
= read(mdfObj
,chanGroupIndex
,chanName
)
从 data
= read(mdfObj
,chanGroupIndex
,chanName
,startPosition
)startPosition
指定的位置读取数据。
读取从 data
= read(mdfObj
,chanGroupIndex
,chanName
,startPosition
,endPosition
)startPosition
到 endPosition
的指定范围的数据。
使用可选的名称-值对组指定某些函数行为。data
= read(___,Name=Value
)
示例
从 MDF 文件中读取所有数据
从 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"]);
基于指定的索引值读取一定范围内的数据
使用索引形式的 startPosition
和 endPosition
指定数据范围,从 MDF 文件中读取指定范围内的数据。
mdfObj = mdf("MDFFile.mf4"); data = read(mdfObj,1,["Channel1","Channel2"],1,10);
基于指定的时间值读取一定范围内的数据
使用时间值形式的 startPosition
和 endPosition
指定数据范围,从 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]
输入参数
mdfObj
— MDF 文件
MDF 文件对象
MDF 文件,指定为 MDF 文件对象。
示例: mdf("MDFFile.mf4")
chanList
— 通道列表
表
chanGroupIndex
— 通道组的索引
数值
通道组的索引,指定为数值,用于标识要读取的通道组。
示例: 1
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
chanName
— 通道的名称
字符串 | 字符向量
通道的名称,指定为字符串、字符向量或数组。chanName
标识通道组中一个通道的名称。使用一个字符向量元胞数组或字符串数组来标识多个通道。
示例: "Channel1"
数据类型: char
| string
| cell
startPosition
— 通道数据的第一个位置
数值 | 持续时间
通道数据的第一个位置,指定为数值或持续时间。startPosition
选项指定读取通道数据时的第一个位置。提供数值以指定索引位置;使用持续时间以指定时间位置。如果仅提供 startPosition
而没有提供 endPosition
选项,则返回该位置的数据值。当与 endPosition
结合使用以指定范围时,该函数将返回从 startPosition
(包含此值)到 endPosition
(不包含此值)范围的数据。
示例: 1
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| duration
endPosition
— 通道数据范围的最后位置
数值 | 持续时间
通道数据范围的最后位置,指定为数值或持续时间。endPosition
选项指定读取一定范围的通道数据时的最后一个位置。同时提供 startPosition
和 endPosition
可指定检索一定范围的数据。读取该范围的数据时,该函数返回到 endPosition
为止(但不包含此值)的数据。提供数值以指定索引位置;使用持续时间以指定时间位置。
示例: 1000
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| duration
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量后,但参量对组的顺序无关紧要。
在 R2021a 之前,需要使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: Conversion="Numeric"
OutputFormat
— 输出数据的格式
"Timetable"
(默认) | "Vector"
| "TimeSeries"
输出数据的格式,指定为字符串或字符向量。此选项根据下表格式化输出。
输出格式 | 描述 |
---|---|
"Timetable" | 将来自一个或多个通道的时间表返回到一个输出变量中。这是同时从多个通道读取时唯一允许的格式。(默认值。) 注意:时间表格式包括 MDF 通道的变量。由于变量标题必须是有效的 MATLAB® 标识符,因此它们可能与 MDF 对象 |
"Vector" | 返回来自一个通道的数值数据值的向量,以及时间值的向量(可选)。使用一个输出变量以仅返回数据,或使用两个输出变量以同时返回数据和时间戳的向量。 |
"TimeSeries" | 返回来自一个通道的数据的时间序列。 |
示例: "Vector"
数据类型: char
| string
Conversion
— MDF 文件数据的转换选项
"Numeric"
(默认) | "All"
| "None"
MDF 文件数据的转换选项,指定为 "Numeric"
、"All"
或 "None"
。默认使用 mdf
对象的 Conversion
属性中指定的值。此选项会覆盖该设置。
"Numeric"
- 仅应用数值转换规则 (CC_Type 1-6)。采用非数值转换规则的数据作为原始的未转换的值导入。"None"
- 不要应用任何转换规则。所有数据都作为原始数据导入。"All"
- 应用所有数值和文本转换规则 (CC_Type 1-10)。
示例: Conversion="All"
数据类型: char
| string
IncludeMetadata
— 读取数据的同时读取元数据
false
(默认) | true
从 MDF 文件中读取其数据的同时读取通道组和通道元数据。默认值为 false
。仅当 OutputFormat
指定为 "Timetable"
时,才能包含元数据。时间表不能为空。您可以访问 data.Properties.CustomProperties
中的元数据。
从一个包含多个通道的通道组中读取数据时,指定 IncludeMetadata=true
可能会影响函数性能。
示例: IncludeMetadata=true
数据类型: logical
输出参量
data
— 通道数据
时间表 (默认) | 双精度值 | 时间序列 | 元胞数组
通道数据,根据 OutputFormat
选项值和通道组数量,以时间表、时间表元胞数组、双精度向量或时间序列形式返回。
time
— 通道数据时间
双精度值
通道数据时间,以双精度值元素向量的形式返回。仅当 OutputFormat="Vector"
时才返回时间向量。
版本历史记录
在 R2016b 中推出R2023b: 不推荐使用 read
函数
不推荐使用 mdf
对象及其 read
函数,在以后的版本中可能会将其删除。
您应更新代码以改用 mdfRead
和相关函数。mdfRead
直接访问 MDF 文件,并返回一个由时间表组成的元胞数组,每个通道组都在该元胞数组中有一个对应的时间表。
有关更多详细信息,请参阅转换您的 mdf 对象代码。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)