我希望有人可以帮我解决这个问题:
我需要将一个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.
如果您需要其他信息,请告诉我们。
感谢您的时间!
答案 0 :(得分:4)
txt2mat [1]应该可以解决您的问题。如果使用“块”读取模式,它也比纯文本读取方法快得多。
您可以通过NaN填充未识别的(例如空单元格)并随后检测它们。
或者,您可以在文件导入期间替换已经存在的点:
DATA = txt2mat(filename, 'ReplaceChar', '. ');
[1] http://www.mathworks.com/matlabcentral/fileexchange/18430-txt2mat
答案 1 :(得分:2)
如果我没弄错,.
不是分隔符。
你可以做些什么来摆脱文件中的.
(导致问题)是首先将其替换为NaN
,或者如果不能,请在以下情况之后执行以下操作:
str = fileread('data.txt');
data_str = strrep(str, ' . ', ' NaN ');
请注意.
和NaN
之前和之后的两个空格。
然后您可以使用textread
或任何其他标准数据读取功能。
希望它有所帮助。