在Matlab中使用fscanf从文本文件中读取带有某些缺少信息的数据

时间:2018-07-26 23:00:34

标签: matlab scanf info

我有一个文本文件,其内容如下:

0.00316047 0.00189992 0.00186791 0.00170366 0.00145677 0.0020697 0.00316047 0.00287378 0.00226645 1

85.1637 44.9496 59.0738 74.457 82.4159 {} 51.9875 54.7822 85.1637 1

我想在matlab中使用fscanf命令从此文件中读取数据

可以看出,我想在扫描文本文件并识别其索引的第二行(即{})中有一个空ele。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以做类似的事情

fid = fopen('file.txt', 'r');
s = textscan(fid, '%s', 'Delimiter', ' ', 'MultipleDelimsAsOne', true);
fclose(fid);
result = str2double(s{1}).';

这使用空格作为分隔符。 resdult是一个行向量,其中任何非数字都将转换为NaN。对于您的示例文件,

result =
  Columns 1 through 6
   0.003160470000000   0.001899920000000   0.001867910000000   0.001703660000000   0.001456770000000   0.002069700000000
  Columns 7 through 12
   0.003160470000000   0.002873780000000   0.002266450000000   1.000000000000000  85.163700000000006  44.949599999999997
  Columns 13 through 18
  59.073799999999999  74.456999999999994  82.415899999999993                 NaN  51.987499999999997  54.782200000000003
  Columns 19 through 20
  85.163700000000006   1.000000000000000