我正在尝试使用Matlab中的csvread函数从csv文件加载数据,如下所示:
data= csvread('2017.socc.dataset.csv');
label = data(:,1);
data=data(:,2:8)
file.csv包含数字值,但是当我加载它时,我得到的变量数据为0值。
该文件的第一行如图所示:
变量数据:
我该如何解决?
答案 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做得很好,并且如果您想要与导入相对应的代码,也可以生成它!
转到“首页/导入数据”,然后按照以下步骤进行操作,直到预览使您能够以所需的方式拥有数据(注意:对于每一列,您都可以选择首选类型)。然后,您可以单击“导入选择”,将变量放入工作区中,或者选择“生成脚本”或“生成函数”以获取实际代码。
==编辑== 我没有看到您得到的输出,并且上面的注释(在我回答时发布)关于长格式,在这种情况下,如果实际值不为零,则可能是正确的解决方案(这就是我的意思)从您的问题中得出的假设。