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

使用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帮助文档


猜你喜欢

转载自blog.csdn.net/weixin_40061485/article/details/123141423
今日推荐