我有文字(可能是这样的100K行)
time,10 a b,20 c d
(时间= HH:mm:ss.ffff,毫秒)
我想将其导入2个数组
time,a,b
time,c,d
什么是最短的路?我需要存储脚本/代码以备将来使用...
答案 0 :(得分:1)
MATLAB有几个文本输入选项。虽然基于正则表达式的选项(如文本扫描)通常是有效的,但听起来你有一个固定的格式,可以通过手动顺序读取行来更好地处理。我发现使用此方法的性能比使用文本扫描或导入更加一致。如果a,b,c,d不是固定宽度,则需要做其他事情。在这种情况下,我只需使用导入向导来设置输入,然后保存导入代码并根据需要进行修改以使其自动化。
array1 = NaN(<numberoflines>,6);
array2 = NaN(<numberoflines>,6);
fname = 'path_to_some_file';
fid = fopen(fname);
stop = 0;
jj = 1;
while ~stop
cline = fgetl(fid);
if ischar(cline)
HH = str2double(cline(1:2));
MM = str2double(cline(...));
...
array1(jj,:) = [HH MM SS MS a b];
array2(jj,:) = ...;
else
disp('End of file')
stop = 1;
end
end
fclose(fid)
答案 1 :(得分:0)
尝试使用regexp
。一个非常强大的工具,用于在matlab中解析字符串。