【问题标题】:Reading data from .txt file into Matlab将 .txt 文件中的数据读入 Matlab
【发布时间】:2017-06-18 03:50:44
【问题描述】:

我这几天一直在徒劳地尝试做一件看似简单的事情——我想从一个看起来像这样的 .txt 文件中读取数据:

    0.221351321
    0.151351321
    0.235165165
    8.2254546 E-7

进入 Matlab。我已经能够使用 fscanf 命令将 .txt 文件中的数据作为列向量加载,如下所示:

    U=fscanf(FileID, '%e')

前提是我先浏览文件并删除数据集中出现科学记数法的“E”之前的空格。

由于我必须生成大量这样的集合,因此必须对每个 .txt 文件进行搜索和替换是不切实际的。

matlab 有没有办法读取出现的数据,如上面的示例(在“E”之前有空格),并将其放入列向量中?

对于任何了解 PARI-GP 的人来说,另一种解决方法是首先让输出没有空格——但到目前为止,我还没有找到一种方法来擦除科学记数法中“E”之前的空格,我无法预测科学计数法中的数字是否会出现在数据集中。

谢谢!

【问题讨论】:

    标签: matlab pari


    【解决方案1】:

    谢谢大家的帮助,我找到了解决办法。有一种方法可以消除 PARI-GP 中的空格,以便输出的 .txt 文件以没有空格开头。我将输出设置为“prettymatrix”。需要输入以下内容:

        ? \o{0}
    

    将输出更改为“Raw”,以消除科学记数法中“E”之前的空格。

    再次感谢您的帮助。

    【讨论】:

      【解决方案2】:

      一个简单的方法,可能不是最好的,是逐行读取,删除空格并转换回浮点数。

      例如,

      x = []
      tline = fgetl(FileID);
      while ischar(tline)
          x = [x str2num(tline(find(~isspace(tline))))]
          tline = fgetl(FileID);
      end
      

      【讨论】:

      • 感谢您的及时回复!
      【解决方案3】:

      一个班轮:

      data = str2double(strsplit(strrep(fileread('filename.txt'),' ',''), '\n'));
      

      strrep 删除所有空格,strsplit 将每一行作为单独的字符串,str2double 将字符串转换为数字。

      【讨论】:

      • 感谢您的回复!我目前正在尝试您的解决方法。
      • 我确信它会起作用,而且它似乎起作用了,如果我应用它的文件更小——它有十亿行!
      猜你喜欢
      • 2018-04-12
      • 2018-12-23
      • 2015-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多