如何将导入文本拆分为不同的变量

时间:2013-02-24 17:23:06

标签: matlab

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

time,10 a b,20 c d

(时间= HH:mm:ss.ffff,毫秒)

我想将其导入2个数组

time,a,b
time,c,d

什么是最短的路?我需要存储脚本/代码以备将来使用...

2 个答案:

答案 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中解析字符串。