我有连续的.dat文件,我想通过垂直连接文件来读取并输入到单个矩阵中。到目前为止,我所使用的代码适用于只有标签作为分隔符的简单数字文件。
import=[];
data=[];
for i = 1:32
data1=[import dlmread(sprintf('%d.dat',i))];
data=vertcat(data, data1);
clear data1;
end
我将正确的输出带入数据矩阵。但我的文件格式如下:
first second third
0 11/15 08:57:42.000 54 67 82
1 11/15 09:48:47.010 49 32 31
...
正如你所看到我有三个分隔符(:\ t /)和标题只在最后三列中基本上是我想要阅读的那些,那就是我想要一个矩阵:
54 67 82
49 32 31
...
我尝试将分隔符指定为dlmwrite以及要跳过多少行/列但是sprintf中出现错误(' delimiter = sprintf(delimiter);%Interpret \ t(如果需要)') 。有没有人知道如何去做?
更新:
我设法进一步了解
data=[];
for i = 1:32
filename = sprintf( '%d.dat',i );
data1=importdata(filename);%creates a cell array
data2=cell2mat(data1(3:end,:));%converts it to char
%The data, without the header, start from the 3rd row.
data=vertcat(data, data2); %concatenate vertically all the files
clear data1; clear data2;
end
%the data
a1=str2num(data(1:end,20:25));%the first data column is in char 20-25
a2=str2num(data(1:end,30:35));%the second data column is in char 30-35
事情是,最后一部分需要花费太多时间,超过一个小时已经过去,直到我手动停止它。有没有人知道更简单,更快捷的方法呢?
答案 0 :(得分:0)
我自己设法解决了这个问题,所以我将它发布在这里以供将来参考:
for i = 1:32
filename = sprintf( '%d.dat',i );
data1 = dlmread(filename,'',2,3);%start from row 2, headercolumn 3
data=vertcat(data, data1);
clear data1;
end
现在,数据矩阵仅包含我的数据列,并在几秒钟内运行。