csvread 函数加载 0 个值
csvread function loads 0 values
我正在尝试使用 Matlab 中的函数 csvread 从 csv 文件加载数据,如下所示:
data= csvread('2017.socc.dataset.csv');
label = data(:,1);
data=data(:,2:8)
file.csv 包含数值,但是当我加载它时,我得到的变量数据为 0。
文件的第一行如图所示:
变量数据:
我该如何解决?
文件的实际摘录(而不是屏幕截图)会有所帮助,因为这可能是某种编码问题(CSV 有多种编码方式,例如取决于本地化)。
然而,对于所有数据创建目的,我总是发现 Matlab GUI 做得很好,如果你想要与导入对应的代码,它也可以生成!
转到“主页”/“导入数据”,然后只需按照步骤操作,直到预览使您能够按照自己的方式获得数据(注意:对于每一列,您可以选择一种首选类型)。然后,您可以单击 "import selection",将变量放入工作区,或者选择 "generate script" 或 "generate function" 以获取实际代码。
==编辑==
我没有看到你得到的输出,上面关于长格式的评论(在我回答时发布)在这种情况下可能是正确的解决方案,如果实际值不是零(这是我假设你的问题)。
只是为了解决这个问题:看来 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,它将显示为 0.000000000000000,即使 Matlab 已存储实际值。
更多数据显示选项您可以查看Matlab help page for 'format'
我正在尝试使用 Matlab 中的函数 csvread 从 csv 文件加载数据,如下所示:
data= csvread('2017.socc.dataset.csv');
label = data(:,1);
data=data(:,2:8)
file.csv 包含数值,但是当我加载它时,我得到的变量数据为 0。
文件的第一行如图所示:
变量数据:
我该如何解决?
文件的实际摘录(而不是屏幕截图)会有所帮助,因为这可能是某种编码问题(CSV 有多种编码方式,例如取决于本地化)。
然而,对于所有数据创建目的,我总是发现 Matlab GUI 做得很好,如果你想要与导入对应的代码,它也可以生成!
转到“主页”/“导入数据”,然后只需按照步骤操作,直到预览使您能够按照自己的方式获得数据(注意:对于每一列,您可以选择一种首选类型)。然后,您可以单击 "import selection",将变量放入工作区,或者选择 "generate script" 或 "generate function" 以获取实际代码。
==编辑== 我没有看到你得到的输出,上面关于长格式的评论(在我回答时发布)在这种情况下可能是正确的解决方案,如果实际值不是零(这是我假设你的问题)。
只是为了解决这个问题:看来 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,它将显示为 0.000000000000000,即使 Matlab 已存储实际值。
更多数据显示选项您可以查看Matlab help page for 'format'