matlab导入文本格式

时间:2011-02-19 02:15:59

标签: matlab text file-io import

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且格式正确。我想知道是否有其他简单的方法?感谢。

2 个答案:

答案 0 :(得分:2)

我认为问题在于importdata()不区分1个或多个空格,因此它假定该行以第一个数字开头。制表符分隔的数据没有此问题。如果要创建数据集,那么最好使用制表符或逗号分隔数据。您可以使用textscan()拉出一些文本格式魔术。

答案 1 :(得分:0)

导入此内容的最简单方法是通过导入工具执行此操作,作为固定宽度文件:

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));