0

我有文本(可能是这样的 100K 行)

time,10 a b,20 c d

(时间 = HH:mm:ss.ffff 以毫秒为单位)

我想将它导入 2 个数组

time,a,b
time,c,d

最短的方法是什么?我也需要存储脚本/代码以供将来使用...

4

2 回答 2

1

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)
于 2013-02-24T17:47:02.567 回答
0

尝试使用regexp. matlab中解析字符串的一个非常强大的工具。

于 2013-02-24T17:30:23.840 回答