使用matlab处理INCF采集数据,mdf(.dat)格式文件,并将将其写入excel文件

您所在的位置:网站首页 excel文件转换dat 使用matlab处理INCF采集数据,mdf(.dat)格式文件,并将将其写入excel文件

使用matlab处理INCF采集数据,mdf(.dat)格式文件,并将将其写入excel文件

2024-02-23 16:55| 来源: 网络整理| 查看: 265

使用matlab处理INCF采集数据,mdf(.dat)格式文件,并将将其写入excel文件

最近在做某汽车公司关于汽车标定的数据。数据通过INCA采集,保存为.dat格式。数据可以通过measure data analyzer图形化显示,并导出为其他格式,但是软件下载麻烦。使用matlab处理也很方便。

数据处理步骤 1.读取文件 // 添加项目路径到matlab中 folder ='要操作的文件路径'; % 要操作的文件夹 addpath( genpath(folder) ); 2.使用mdf函数访问.dat文件 filename = '想要读取的文件名.dat'; mdfobj = mdf(filename);

读取过后即可在matlab的Workspace区域查看到mdfobj变量的内容,如下 在这里插入图片描述 其中ChannelNames中即为数据的特征名,但是由于数据采样时频率不同,导致数据被分成8个cell,每个cell中采样频率相同的特征。

3.接下去是如何读取每个cell中特征名下的值,由于数据格式和命名风格不同,使用一段函数读取数据 %该函数用于查找mdf文件中的变量,并输出数据和对应的时间 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 4.调用函数,读取数据 //Variable是想要读取的特征 Variable = 'C_3_0_217\CAN-Monitoring: 1'; [data,time] = data_time_output(Variable, mdfobj); varNames = {Variable}; 5.将读取到的数据写入excel中 //table函数将特征名和数值组合成同一列 T = table(data,'VariableNames',varNames); writetable(T, '2021-11-18_09.31.59_k1_valve_dither_test_20.0bar_100Hz_250mA.csv','WriteRowNames',true) 6.一般一个cell中有多个特征,此时需要一个循环一次读出cell中全部数据 //程序中数字1为第一个cell for i=1:length(mdfobj.ChannelNames{1}) Variable = mdfobj.ChannelNames{1}{i}; [data,time] = data_time_output(Variable, mdfobj); ` varNames = {Variable}; T = table(data,'VariableNames',varNames); H(:,i)=T; //这个地方如果不用H只能将cell中最后一列写入表中,暂时没有好的办法,如果有人知道请留言,谢谢 end writetable(H, '想要写入的表名.xlsx','WriteMode','Append','WriteRowNames',true)

更多关于table和writetable函数的用法可自行查阅matlab帮助文档



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3