我有一个 CSV 格式的文本文件,如下:
name,mi,km,sp
Aa,2.6,4.1843024285,3
Bb,12.7,20.4387080162,5
Cc,104,167.3720971402,9
Dd,8816,14188.0039268069,40
Ee,11669,18779.4711685469,39
Ff,77793,125195.93800795,84
Gg,103723,166926.307996846,76
第一列是字符串类型,第二列和第三列是实数,第四列是整型数字。
我使用以下脚本来读取数据:
pkg load io
data = csv2cell("data.csv", 1)
sp = data(:,4) % Read 'sp' colunm
它看起来读起来很好,但是当我尝试使用“sp”变量中的数据创建条形图时,使用命令 bar(sp) 我收到错误:
error: bar: Y must be numeric
csv2cell 函数不是应该能够读取混合类型的数据吗?但读取后是否需要将数据转换为各自的值呢?如果是这样,我该怎么做?
预先感谢您提供的任何帮助。
编辑:尝试类似的事情
sn = str2num(sp)
也没有帮助,因为在这种情况下我收到了消息:
error: str2num: S must be a string or string array
然后我尝试使用
datan = str2double(data)
刚刚返回了一个 NaN 矩阵
我还是很茫然。
查看您正在创建的数据总是有帮助的。
使用相同的数据集,我看到:
pkg load io
data = csv2cell('data.csv',1)
data =
{
[1,1] = Aa
[2,1] = Bb
[3,1] = Cc
[4,1] = Dd
[5,1] = Ee
[6,1] = Ff
[7,1] = Gg
[1,2] = 2.6000
[2,2] = 12.700
[3,2] = 104
[4,2] = 8816
[5,2] = 11669
[6,2] = 77793
[7,2] = 103723
[1,3] = 4.1843
[2,3] = 20.439
[3,3] = 167.37
[4,3] = 1.4188e+04
[5,3] = 1.8779e+04
[6,3] = 1.2520e+05
[7,3] = 1.6693e+05
[1,4] = 3
[2,4] = 5
[3,4] = 9
[4,4] = 40
[5,4] = 39
[6,4] = 84
[7,4] = 76
}
sp = data(:,4)
sp =
{
[1,1] = 3
[2,1] = 5
[3,1] = 9
[4,1] = 40
[5,1] = 39
[6,1] = 84
[7,1] = 76
}
请注意,您创建的不是数值数组。这是一个元胞数组。要将 sp 转换为数值数组,您可以使用
cell2mat
:
>> sp = cell2mat(sp)
sp =
3
5
9
40
39
84
76
现在
bar(sp)
应该可以正常工作了。