如何在Matlab中读取多个日志文件

时间:2018-03-31 13:18:49

标签: matlab file fopen textscan

我想打开多个日志文件,并将它们连接起来,以便它们创建一个大的日志文件,然后我可以从中提取所需的信息。

我希望matlab打开尽可能多的文件,就像我的文件夹中一样,基于包含某个字符串的名称。

到目前为止,这是我的代码:

pilotfiles = dir (['*PILOT*.log'])

for fil=1:length(pilotfiles)
    files{fil}=pilotfiles(fil).name;
end;
   files=char(files);

for fil = 1:length (files (:,1));
    clear logs;
    file_name = files (fil,:);
    noofColumns = 45;
    cs = repmat('%s', 1, noofColumns);
    fileID = fopen(deblank(file_name));
    logs = textscan(fileID,cs); 
    biglog = horzcat (logs {:}); 
    fclose (fileID);    
end

当然,如果代码有效,我不会问这个问题。

file_name正确返回我所有文件的名称,'logs'似乎读取了每个文件的内容,但是我的'biglog'只包含最后一个日志文件的内容。

任何人都有任何想法我在哪里犯错?

注意:我正在使用MAC,此代码基于代码,该代码已在PC上运行

1 个答案:

答案 0 :(得分:0)

pilotfiles=dir('*PILOT*.log');
pilotfiles=pilotfiles(3:end);
N=numel(pilotfiles);
logs=cell(1,N);
cs=repmat('%s',1,45);
for i=1:N
    fid=fopen(fullfile(pilotfiles(i).folder,pilotfiles(i).name));
    logs{i}=textscan(fid,cs);
    logs{i}=[logs{i}{:}];
    fclose(fid);
end
biglog=[logs{:}];

干杯。