【发布时间】:2021-03-03 12:16:17
【问题描述】:
我有一个文件夹,其中包含许多文本文件,每个文件包含 6 个标题以及我要读取的数据:
Phone timestamp;sensor timestamp [ns];channel 0;channel 1;channel 2;ambient
2021-02-15T12:37:32.401;536755331722174808;485232;501982;494303;16818;
2021-02-15T12:37:32.408;536755331729573094;485244;501970;494199;16770;
2021-02-15T12:37:32.415;536755331736971380;485235;502069;494234;16735;
文件名的格式为“Data_20210213_120806”,Data_ YYMMDD_HHMMSS。目前,我刚刚使用uigetfile 手动读取数据并以正确的顺序(最早日期 -> 最新日期)选择文件并将每个文件连接在一起。
当我只有几个文件要查看时这很好,但当存在大量文件时不是很实用。我想知道有没有一种方法可以自动读取每个文件(根据文件名中的日期以正确的顺序)并将它们合并到一个 N -by- 6 矩阵中。
手动读取数据的代码:
[filename1,pathname1] = uigetfile('*.txt','Please Choose the file to process');
filepath1 = fullfile(pathname1,filename1);
fileCell1= readcell(filepath1,'FileType','text','Delimiter',';');
% Define Structure.
Table = cell2table(fileCell1(2:end, :), 'VariableNames', fileCell1(1, :));
% Convert to Datetime
Table.("Phone timestamp") = datetime(strrep(Table.("Phone timestamp"), 'T', ' '));
我怎样才能使这个过程自动化?
【问题讨论】:
-
您真的想要一个 6×N 表,即 6 行 N 列的 MATLAB
table()格式吗?查看文件的内容,您宁愿使用 N×6,即 6 个 列,并且可能在将日期转换为datenum时使用简单的数字矩阵,而不是完整的-成熟的table(). -
是的,我认为你是对的,数字 N×6 矩阵可能是最好的使用方法。