在Octave中读取多格式数据

时间:2016-11-13 12:55:49

标签: matlab csv parsing octave

我刚刚开始学习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函数返回地址。如何避免它们?

提前感谢您的帮助。

1 个答案:

答案 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));