我有文本(可能是这样的 100K 行)
time,10 a b,20 c d
(时间 = HH:mm:ss.ffff 以毫秒为单位)
我想将它导入 2 个数组
time,a,b
time,c,d
最短的方法是什么?我也需要存储脚本/代码以供将来使用...
我有文本(可能是这样的 100K 行)
time,10 a b,20 c d
(时间 = HH:mm:ss.ffff 以毫秒为单位)
我想将它导入 2 个数组
time,a,b
time,c,d
最短的方法是什么?我也需要存储脚本/代码以供将来使用...
MATLAB 有几个文本输入选项。虽然基于正则表达式的选项(如 textscan)通常很有效,但听起来您有一个固定的格式,可以通过手动顺序读取行来更好地处理。我发现这种方法的性能比 textscan 或 import 更一致。如果 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)
尝试使用regexp
. matlab中解析字符串的一个非常强大的工具。