本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

daqread

读取 Data Acquisition Toolbox daq 文件

语法

data = daqread('filename')
[data,time] = daqread(...)
[data,time,abstime] = daqread(...)
[data,time,abstime,events] = daqread(...)
[data,time,abstime,events,daqinfo] = daqread(...)
data = daqread(...,'Param1', Val1,...)
daqinfo = daqread('filename','info')

说明

data = daqread('filename')filename 指定的 Data Acquisition Toolbox™ (.daq) 文件读取所有数据。daqread 返回 data,这是一个 m×n 数据矩阵,其中 m 是样本数,n 是通道数。如果 data 包括多个触发器的数据,则每个触发器中的数据由 NaN 分隔。如果将 OutputFormat 属性设置为 tscollectiondaqread 返回时序集合对象。有关详细信息,请参阅以下内容。

[data,time] = daqread(...) 返回时间/值对组。time 是长度与 data 相同的 m×1 向量,其中包含每个样本的相对时间。测量与出现的第一个触发器相关的相对时间。

[data,time,abstime] = daqread(...) 返回第一个触发器的绝对时间。abstimeclock 向量形式返回。

[data,time,abstime,events] = daqread(...) 返回事件日志。events 是一个包含事件信息的结构体。如果您指定 SamplesTimeTriggers 参数(请参见下面的内容),则事件结构体只包含指定的事件。

[data,time,abstime,events,daqinfo] = daqread(...) 返回包含以下两个字段的结构体 daqinfoObjInfoHwInfoObjInfo 是一个包含属性名称/属性值对组的结构体,HwInfo 是一个包含硬件信息的结构体。整个事件日志返回到 daqinfo.ObjInfo.EventLog

data = daqread(...,'Param1', Val1,...) 使用以下参数指定返回的数据量和数据格式。

参数

说明

Samples

指定样本范围。

Time

指定相对时间范围。

Triggers

指定触发器范围。

Channels

指定通道范围。通道名称可指定为元胞数组。

DataFormat

指定 doubles(默认值)或 native 形式的数据格式。

TimeFormat

指定 vector(默认值)或 matrix 形式的时间格式。

OutputFormat

指定 matrix(默认值)或 tscollection 形式的输出格式。当指定 tscollection 时,daqread 仅返回 data

SamplesTimeTriggers 属性互斥;即可同时定义 SamplesTriggersTime

daqinfo = daqread('filename','info')daqinfo 结构体的文件中返回元数据,从文件中读取数据不会产生开销。daqinfo 结构体包含两个字段:

daqinfo.ObjInfo

一个结构体,包含用于创建文件 filename 的数据采集对象的参数/值对组。注意:不会恢复 UserData 属性值。

daqinfo.HwInfo

一个包含硬件信息的结构体。整个事件日志返回到 daqinfo.ObjInfo.EventLog

示例

使用 Data Acquisition Toolbox 采集数据。模拟输入对象 ai 为四个通道采集一秒的数据,并将数据保存到输出文件 data.daq

ai = analoginput('nidaq','Dev1');
chans = addchannel(ai,0:3);
set(ai,'SampleRate',1000)
ActualRate = get(ai,'SampleRate');
set(ai,'SamplesPerTrigger, ActualRate)
set(ai,'LoggingMode','Disk&Memory')
set(ai,'LogFileName','data.daq')
start(ai)

在收集这些数据并将其保存至磁盘文件后,您可使用 daqread 检索这些数据以及其他采集相关的信息。要从 data.daq 读取所有样本时间对组,请执行以下操作:

[data,time] = daqread('data.daq');

要从 data.daq 读取所有通道的 500 至 1000 个样本,请执行以下操作:

data = daqread('data.daq','Samples',[500 1000]);

要从文件 data.daq 以本机格式读取通道索引 2、4 和 7 的仅 1000 至 2000 个样本,请执行以下操作:

data = daqread('data.daq', 'Samples', [1000 2000],...
               'Channels', [2 4 7], 'DataFormat', 'native');

要从文件 data.daq 仅读取表示所有通道上的第一个和第二个触发器的数据,请执行以下操作:

[data,time] = daqread('data.daq', 'Triggers', [1 2]);

要从 data.daq 获取通道属性信息,请执行以下操作:

daqinfo = daqread('data.daq','info');
chaninfo = daqinfo.ObjInfo.Channel;

要获取 data.daq 包含的事件类型和事件数据列表,请执行以下操作:

daqinfo = daqread('data.daq','info');
events = daqinfo.ObjInfo.EventLog;
event_type = {events.Type};
event_data = {events.Data};

要从文件 data.daq 读取所有数据并作为时序集合对象返回这些数据,请执行以下操作:

data = daqread('data.daq','OutputFormat','tscollection');

提示

.daq 文件详情

  • daqread 用于返回数据、相对时间、绝对时间和事件信息的格式与作为 Data Acquisition Toolbox 一部分的 getdata 函数使用的格式完全相同。有关详细信息,请参阅 Data Acquisition Toolbox 文档。

  • 如果读取多个触发器中的数据,则生成的数据数组的大小会增加,增加数为发出的触发器的个数,因为每个触发器由 NaN 分隔。

  • ObjInfo.EventLog 始终包含整个事件日志,而不管 SamplesTimeTriggers 指定的值为何。

  • 在返回设备对象 (ObjInfo) 信息时不恢复 UserData 属性值。

  • 读取 .daq 文件时,daqread 函数不返回指定为元胞数组的属性值。

  • 通过为 LogFileName 属性(或接受默认值)指定值并将 LoggingMode 属性配置为 DiskDisk&Memory 来创建 Data Acquisition Toolbox (..daq) 文件。

返回的时序集合对象的详情

OutputFormat 设置为 tscollection 时,daqread 返回时序集合对象。该时序集合对象包含该文件中每个通道的绝对时序对象。下面介绍 daqread 如何设置该时序集合对象和时序对象的某些属性。

  • 时序集合对象的 time 属性设置为该文件中指定的 InitialTriggerTime 属性的值。

  • 每个时序对象的 name 属性设置为该文件中通道的 Name 属性的值。如果该名称不能用作时序对象名称,则 daqread 将该名称设置为 'Channel',并附加上通道的 HwChannel 属性。

  • 时序对象的 Units 属性的值取决于 DataFormat 参数的值。如果 DataFormat 参数设置为 'double',则 daqread 将集合中每个时序对象的 DataInfo 属性设置为该文件中对应通道的 Units 属性的值。如果 DataFormat 参数设置为 'native',则 daqreadUnits 属性设置为 'native'。有关这些属性的详细信息,请参阅 Data Acquisition Toolbox 文档。

  • 每个时序对象都将具有对应于与该通道关联的事件日志的附加 tsdata.event 对象。

如果 daqread 返回多个触发器中的数据,则每个触发器中的数据由时序数据中的 NaN 分隔。这会将时序对象中的数据和时间向量的长度增加触发器数。

另请参阅

|