2016-12-05 209 views
0

我用下面的代码试图导入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文件或科学记数法的数字限制?

+2

我不能重现这一点。剥离你的数据直到它工作,找出它现在的工作原理。我想你的数据是在某个地方腐败。小数字代表的是什么?科学计数法? – pschulz

+0

@pschulz我已经这样做,但找不到错误。数字以科学记数法表示。数据文件是[CSV数据文件](http://mathpr.com/data_matlab.csv)。 – wipitillo

+0

对于我提供的数据,它仍能正常工作。你一定在做别的事情。 – pschulz

回答

0

我能够复制这个问题。使用xlsread没有产生这个问题:

filename = 'data_matlab.csv'; 
d = xlsread(filename); 
+0

你正在使用哪个版本的matlab?你使用了提供的数据吗?这很奇怪,我不能重现这个问题。 – pschulz

+0

我很确定它是在2015b 32位。我也有2016b 64,所以我可以检查一下。 – Trogdor

+0

@Trogdor请让我知道,如果你在2016b 64中获得同样的错误。在英寸情况下,我使用2015a 64. – wipitillo

1

由于被怀疑,你的数据在一些地方已损坏。在文件中搜索'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