Matlab csvread函数加载0个值

Matlab csvread函数加载0个值,matlab,octave,Matlab,Octave,我尝试使用Matlab中的函数csvread从csv文件加载数据,如下所示: data= csvread('2017.socc.dataset.csv'); label = data(:,1); data=data(:,2:8) csv文件包含数值,但当我加载它时,得到的变量数据值为0。 文件的第一行如图所示: 变量数据: 如何解决这个问题?文件的实际摘录(而不是截图)会有所帮助,因为这可能是某种编码问题(CSV有多种编码方式,具体取决于本地化等) 然而,对于所有的数据创建目的,我总是发

我尝试使用Matlab中的函数csvread从csv文件加载数据,如下所示:

data=  csvread('2017.socc.dataset.csv');

label = data(:,1);
data=data(:,2:8)
csv文件包含数值,但当我加载它时,得到的变量数据值为0。 文件的第一行如图所示:

变量数据:


如何解决这个问题?

文件的实际摘录(而不是截图)会有所帮助,因为这可能是某种编码问题(CSV有多种编码方式,具体取决于本地化等)

然而,对于所有的数据创建目的,我总是发现MatlabGUI做得很好,如果您想要导入对应的代码,也可以生成它

转到主页/导入数据,然后只需按照步骤操作,直到预览使您能够以所需的方式获取数据(注意:对于每个列,您可以选择首选类型)。然后,您可以单击“导入选择”,将变量放入工作区,或者选择“生成脚本”或“生成函数”以获取实际代码

==编辑==
我没有看到您得到的输出,如果实际值不是零(这是我从您的问题中假设的),那么上面关于长格式的评论(在我回答时发布)可能是本例中的正确解决方案。您所看到的是Matlab中显示设置的伪影。因为您的数据跨越10个数量级以上,所以Matlab通过最大值(在本例中,将值除以1e9)对显示进行规范化,然后仅显示5位数值。尽管显示零,实际值仍应存储在变量中。例如,如果您查询数据的第一个值,您应该得到:

>> data(1)
ans = 
  436.0625
该键位于阵列输出的第一部分:

data =
   1.0e+09 *
   ...
在科学记数法中,436.0625是0.000000 4360625e+09。因此,当只显示5位数字时,它只显示前导零。如上所述,使用
format long
更改显示将显示更精确的显示

>> format long
>> data
data =
   1.0e+09 *
   0.000000436062500   0.000000193426604   0.000000194667969   0.000000000617521   0.000000000593853   0.000000003977791   0.329294135000000
   ...
请注意,即使使用
格式long
,如果任何值小于1e-6,它将显示为0.000000000000000,即使Matlab已经存储了实际值


有关更多数据显示选项,请参见

执行此操作:
格式长;数据
。应显示正确的值。问题不在于数组中的数据,而是值的范围是从1e-1到1e+9,而MATLAB无法使用其首选的5个有效数字显示如此大的范围。谢谢您的回答。我累了。它可以工作,但是数据是以“table”类型加载的,当我尝试将其转换为双值时,我会遇到同样的问题。所有值都变为0。因此,事实上这些值不是零,它们“似乎”是零,正如@bicker的评论:)