自学内容网 自学内容网

matlab将INCA采集的dat文件多个变量批量读取到excel中

参考资料:
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,这个也是一次性只能提取一个


原文地址:https://blog.csdn.net/fightingwa/article/details/143613891

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!