【问题标题】:Loading txt.file into matlab将 txt.file 加载到 matlab 中
【发布时间】:2013-11-29 06:15:33
【问题描述】:

希望有人能帮我解决这个问题:

我需要将一个 txt.file 加载到 matlab 中。 txt.file 看起来像这样:

1 80  1 . 32 
1.374 1 0 . 0

它包含 38 个变量和 11,674 个观察值(我知道这一点是因为我已成功将数据加载到 STATA 中)。 '。'是缺失值。我使用下面的代码:

data = textread('data.txt','','delimiter','.','emptyvalue',NaN);

这不会给我任何错误。但是,生成的数据仅包含 11674 行和 12 列。当将 matlab 中的数据与文本文件进行比较时,matlab 似乎只读取了文本文件的第一季度。

我也尝试将 DATA 加载到 STATA 中,将其导出到 excel 然后使用:

data = xlsread('data.xls','Sheet1');

这也不起作用,因为我没有窗户。 matlab报错:

Warning: Could not start Excel server for import, 'basic' mode will be used.
Error using xlsread (line 232)
XLSREAD unable to read sheet Sheet1.
Error reading record for cells starting at column 0.  Try saving as Excel 98.   

如果您需要更多信息,请告诉我。

感谢您的宝贵时间!

【问题讨论】:

  • . 是否曾经代表小数点,或者它只是一个“无数据”标记。这是一个非常糟糕的字符选择……无论哪种方式,您都不应该将其视为分隔符。在您的第二行中,您有号码1.374。这是一个数字,还是1, missing, 374
  • 不是每个 .是一个缺失值。例如,1.374 是一个数字。不是 1,缺少,374。但是,txt2mat 为我解决了。

标签: excel matlab


【解决方案1】:

txt2mat [1] 应该可以解决您的问题。如果你使用'block'-reading模式,它也比plain textread方法快得多。

您可以用 NaN 填充无法识别的(例如空单元格)并随后检测它们。

或者,您可以在文件导入期间替换已经存在的点:

DATA = txt2mat(filename, 'ReplaceChar', '. ');

[1]http://www.mathworks.com/matlabcentral/fileexchange/18430-txt2mat

【讨论】:

    【解决方案2】:

    如果我没记错的话,. 不是分隔符。 您可以做些什么来摆脱文件中的.(这会导致问题)是首先将其替换为NaN,或者如果您不能,请在之后执行:

    str = fileread('data.txt');
    data_str = strrep(str, ' . ', ' NaN ');
    

    注意.NaN前后的两个空格。

    然后你就可以使用textread或者其他任何标准的数据读取功能了。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2016-08-06
      • 2015-05-17
      • 2019-01-04
      • 1970-01-01
      • 2019-02-13
      • 2017-06-23
      • 1970-01-01
      • 2016-02-09
      • 2013-06-27
      相关资源
      最近更新 更多