使用任意分隔符将文本文件作为Matrix读取到MatLab中

时间:2015-04-13 04:42:45

标签: matlab

我有一个表格的文本文件:

[  1.80000000e+02   1.00000000e+01   1.00000000e+01   1.00000000e+01
   6.00000000e+00   6.00000000e+00   1.10371666e+02   1.70305901e+01
   9.97633591e+01   1.80011719e+02   3.40282347e+38   3.40282347e+38
   6.00000000e+00]
[  1.80000000e+02   1.00035019e+01   1.00000000e+01   1.00000000e+01
   6.00000000e+00   6.00000000e+00   1.10371666e+02   1.70305901e+01
   9.97633591e+01   1.80011719e+02   3.40282347e+38   3.40282347e+38
   3.00000000e+00]
.
.
. 

[  1.80000000e+02   1.00035019e+01   1.00000000e+01   1.00000000e+01
   6.00000000e+00   6.00000000e+00   1.10371666e+02   1.70305901e+01
   9.97633591e+01   1.80011719e+02   3.40282347e+38   3.40282347e+38
   3.00000000e+00]

我想将此数据作为Matrix加载到MatLab中,其中文本文件的每个列表中的数字是单行的内容。因此,实际上,Matrix中的每一行都将包含一个完整列表。我尝试过各种各样的事情,但没有什么能让我得到正确的结果。我认为这是由于奇怪的格式化,每个新行在开头+还有每个新的' ['。任何帮助将不胜感激?

1 个答案:

答案 0 :(得分:1)

我不知道超级优雅的解决方案。我会用这样的sscanf敲出一些东西:

f = fopen('mytmp.txt') ;
s = textscan(f,'%s','Delimiter','[ ]','MultipleDelimsAsOne',true) ;
fclose(f) ;
m = numel(s{1}) ;
v = NaN(m,1) ;
for ii = 1:m
    v(ii) = sscanf(s{1}{ii},'%f') ;
end
m = reshape(v,13,[])' ;