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