octave / matlab逐行读取文本文件,只将数字保存到矩阵中

时间:2016-08-08 08:54:32

标签: octave

我对octave或matlab数据后处理有疑问。 我有从下面流利的文件导出的文件:

                     "Surface Integral Report"

       Mass-Weighted Average
          Static Temperature                  (k)
          crossplane-x-0.001            1242.9402
          crossplane-x-0.025            1243.0017
          crossplane-x-0.050            1243.2036
          crossplane-x-0.075            1243.5321
          crossplane-x-0.100            1243.9176

我想使用octave / matlab进行后期处理。 如果我逐行读取,并且只将带有“crossplane-x-”的行保存到新文件中,或者直接将这些行中的数据保存到矩阵中。由于我有很多类似的文件,我可以通过调用它们的标题来制作图表。 但是我在识别含有char“crossplane-x-”的行时遇到麻烦。我正在尝试做这样的事情:

clear, clean, clc;
% open a file and read line by line
fid = fopen ("h20H22_alongHGpath_temp.dat");
% save full lines into a new file if only chars inside
txtread = fgetl (fid)
num_of_lines = fskipl(fid, Inf);
char = 'crossplane-x-'
for i=1:num_of_lines,
  if char in fgetl(fid)
    [x, nx] = fscanf(fid);
    print x
  endif
endfor
fclose (fid);

有人会对这个问题有所了解吗?我使用正确的功能吗?谢谢。

1 个答案:

答案 0 :(得分:0)

以下是您特定文件的快捷方式:

>> S = fileread("myfile.dat");       % collect file contents into string
>> C = strsplit(S, "crossplane-x-"); % first cell is the header, rest is data
>> M = str2num (strcat (C{2:end}))  % concatenate datastrings, convert to numbers
M =

   1.0000e-03   1.2429e+03
   2.5000e-02   1.2430e+03
   5.0000e-02   1.2432e+03
   7.5000e-02   1.2435e+03
   1.0000e-01   1.2439e+03