csvread函数加载0值

时间:2019-07-29 19:14:02

标签: matlab octave

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

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

label = data(:,1);
data=data(:,2:8)

file.csv包含数字值,但是当我加载它时,我得到的变量数据为0值。 该文件的第一行如图所示:  the 2017.socc.dataset.csv

变量数据:values in the variable data

我该如何解决?

2 个答案:

答案 0 :(得分:1)

只需解决此问题:csvread似乎工作正常。您所看到的是Matlab中显示设置的伪像。由于您的数据跨越10个数量级,因此Matlab会将显示归一化为最大值(在这种情况下,将值除以1e9),然后仅显示5位数字。尽管显示零,但实际值应存储在变量中。例如,如果您查询数据的第一个值,则应该得到:

>> data(1)
ans = 
  436.0625

键在数组输出的第一部分:

data =
   1.0e+09 *
   ...

以科学计数法表示,436.0625为0.0000004360625e + 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
   ...

请注意,即使使用format long,如果您的任何一个值小于1e-6,即使Matlab存储了实际值,它也将显示为0.000000000000000。

有关更多数据显示选项,您可以查看Matlab help page for 'format'

答案 1 :(得分:-1)

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

但是,出于所有数据创建目的,我总是发现Matlab GUI做得很好,并且如果您想要与导入相对应的代码,也可以生成它!

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

==编辑== 我没有看到您得到的输出,并且上面的注释(在我回答时发布)关于长格式,在这种情况下,如果实际值不为零,则可能是正确的解决方案(这就是我的意思)从您的问题中得出的假设。