2013-02-24 33 views
0

我的文字是(可能是100K线这样)你怎么能拆分导入文本不同的变量

time,10 a b,20 c d 

(时间= HH:MM:ss.ffff与毫秒)

我想要将其导入2个阵列中

time,a,b 
time,c,d 

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

+0

你的问题对我来说是不可理解的!你能展示一些代码示例吗?或向我们展示10和20发生了什么? – 2013-02-24 17:34:11

+0

10和20是常数。我只知道他们在那里 – 2013-02-24 17:35:33

回答

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) 
0

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

+0

我真的很讨厌正则表达式。可以在平面脚本中完成吗? – 2013-02-24 17:36:55