参考资料:
MATLAB处理INCA采集数据(mdf,dat等)一
使用matlab处理INCF采集数据,mdf(.dat)格式文件,并将将其写入excel文件
这个资料只能一个变量一个变量的提取,本对其进行了完善,可以一次性提取多个变量
1、导入数据
clc
clear
filename = 'data.dat';
mdfobj = mdf(filename);
% Variable是想要读取的特征
Variable = {'bianliang1\XCP:1','bianliang2\XCP:1'};
% Variable = {'bianliang1\XCP:1'};
Variable分别放了一个和两个变量的,可以测试两个都是能正常运行的
2、批量提取数据
for i = 1:length(Variable)
Variable_1 = Variable(i);
[data,time] = data_time_output(Variable_1, mdfobj);
varNames = Variable_1;
timeName = {'time'};
% table函数将特征名和数值组合成同一列
T = table(time,'VariableNames',timeName);
D = table(data,'VariableNames',varNames);
if i == 1
H = [T,D];
else
H = [H,D];
end
end
writetable(H, 'test.csv','WriteRowNames',true)
i=1时就是提取第一个变量,这时候把时间变量放到第一列,后面每提取一个变量就加在后面的列中。
3、数据提取函数
function[data,time] = data_time_output(Variable,mdfobj)
i=1;
ChannelLength=length(mdfobj.ChannelNames);
for i=1:ChannelLength
PositionVariableLogic=strcmp(mdfobj.ChannelNames{i},Variable);
%在频道i中查找对应的Variable,并输出该频道中的每个cell是否含有该Variable对应的逻辑值,如果这个频道中有该Variable,则输出1,如没有则输出0
PositionVariable=find(PositionVariableLogic);
%FINDposition,找到对应的位置
if PositionVariable>0
[data, time] = read(mdfobj, i, Variable, 1, 1000000000, 'OutputFormat', 'vector');
else
continue
end
end
end
相关代码链接
matlab版本:matlab将INCA采集的dat文件多个变量批量读取到excel中
python版本:python将INCA采集的dat文件多个变量批量读取到excel中
python参考资料:使用Python提取INCA采集的dat数据并输出到EXCEL,这个也是一次性只能提取一个