【问题标题】:matlab import text formatmatlab导入文本格式
【发布时间】:2011-02-19 02:15:59
【问题描述】:

txt文件如下。

  1      1     0       
  2      1     3     
         2     9     
         3    10      
  3      1     1     

当我使用importdata导入文件,得到如下格式;

1   1   0
2   1   3
2   9   NaN
3   10  NaN
3   1   1

我真正想要的是

  1      1     0       
  2      1     3     
NaN      2     9     
NaN      3    10      
  3      1     1    

有什么方便的方法吗?或者我应该在导入之前在每个数字之间创建一个tab 以让matlab识别第一个元素是NaN?谢谢!

编辑

我测试发现如果分隔符是tab并且它的格式是正确的。我想知道是否还有其他简单的方法?谢谢。

【问题讨论】:

    标签: matlab text file-io import


    【解决方案1】:

    我认为问题在于importdata() 不区分 1 个或多个空格,因此它假定该行以第一个数字开头。制表符分隔的数据没有这个问题。如果您正在创建数据集,那么最好使用制表符或逗号之类的东西来分隔数据。不过,您也许可以使用textscan() 来实现一些文本格式化魔法。

    【讨论】:

      【解决方案2】:

      导入此文件的最简单方法是通过导入工具将其作为固定宽度文件进行:

      uiimport(filename);
      

      您还可以从此处生成代码(选择“导入选择”下拉菜单,然后生成脚本或函数)。

      或者,您可以使用 textscan 阅读它:

      fid = fopen(filename);
      d = textscan(fid, '%3s%3s%s%[^\n\r]', 'Delimiter', '', 'WhiteSpace', '');
      fclose(fid);
      

      如果你愿意,你可以把它组成一个数字数组:

      d2 = cell2mat(cellfun(@(x) str2double(x), d, 'UniformOutput', false));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多