我刚刚开始学习Octave,我正在尝试读取包含字符串,整数和浮点数据形式的csv
文件。示例如下所示
a,b,c,d
1,c,10,1234.2
e,2,4,5
我最初使用csvread
尝试过很多次。我的一些例子如下:
[val1, val2, val3, val4] = csvread('input.csv', '%s %s %s %s');
但我收到的错误如error: dlmread: error parsing RANGE
然后使用此question,我使用了textread
函数,如下所示:
[val1, val2, val3, val4] = textread('input.csv', '%s %s %s %s', 'delimiter', ',');
我现在能够读取数据,但是当我打印数值时,我甚至得到如下所示的值的地址。
val1 =
{
[1,1] = a
[2,1] = 1
[3,1] = e
}
请有人帮助我
1)找出csvread
中的错误。
2)为什么textread
函数返回地址。如何避免它们?
提前感谢您的帮助。
答案 0 :(得分:2)
可以在answer中找到使用dlmread,这是导致错误的原因。注意
x = csvread (filename, dlm_opts)
相当于
x = dlmread (filename, "," , …)
textread
返回的项目val1 =
{
[1,1] = a
[2,1] = 1
[3,1] = e
}
是cell array of strings。使用单元阵列,因为矩阵必须由相等长度的向量组成,当操作一个可变大小的单词时,情况不是这样。如果一个人在矩阵中存储了单词,那么所有行/列都必须被“填充”,只要存储最长的单词。
要将单元格数组(val1)的特定索引处的元素转换为您使用的向量cell2mat
vec=cell2mat(val1(index));