导入CSV文件
问题描述:
我用下面的代码试图导入csv file(7816 X 119)有很多微小的数字(1.0E-11和1.0E-9之间):导入CSV文件
filename = 'dataset.csv';
D = importdata(filename,',',1);
当我检查导入结果,我获得
D=
data: [187x119 double]
textdata: {1x119 cell}
colheaders: {1x119 cell}
注意的D
大小比原来的数据尺寸小了很多。
当我用一个数字较大的矩阵(而不是科学记数法)做同样的过程时,我没有任何问题。
我在想,如果MATLAB有一个限制的大小,我可以导入一个CSV文件或科学记数法的数字限制?
答
由于被怀疑,你的数据在一些地方已损坏。在文件中搜索'DIV',你会发现一个条目'#DIV/0!'几次。有趣的是,这个工作在我的一些matlab版本中(我目前不知道版本号),以及它在当前版本中以八度音阶工作。
这里测试:
D = csvread('data_matlab.csv', 1, 0);
给
Error using dlmread (line 143)
Mismatch between file and format string.
Trouble reading 'Numeric' field from file (row number 187, field number 72) ==>
#DIV/0!,1.11E-08,0,9.28E-09,2.8E-09,0.000000031,1.99E-08,6.49E-10,1.75E-09,9.66E-09,8.47E-10,3.82E-09,2.41E-10,1.71E-09,5.48E-09,1.32E-09,8.73E-09,2.05E-09,8.89E-10,3.83E-10,0,1.36E-08,2.92E-09,3.08E-...
Error in csvread (line 47)
m=dlmread(filename, ',', r, c);
你在哪里得到的数据?你能影响输出吗?如果你不能手动替换错误条目(使用适当的工具)或使用@Trogdors答案。
+0
干得好!我再次检查,问题仍然存在与Matlab 2016b-64。 – Trogdor
我不能重现这一点。剥离你的数据直到它工作,找出它现在的工作原理。我想你的数据是在某个地方腐败。小数字代表的是什么?科学计数法? – pschulz
@pschulz我已经这样做,但找不到错误。数字以科学记数法表示。数据文件是[CSV数据文件](http://mathpr.com/data_matlab.csv)。 – wipitillo
对于我提供的数据,它仍能正常工作。你一定在做别的事情。 – pschulz