在 Octave 中读取多格式数据

Read multi format data in 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 函数返回地址。如何避免它们?

在此先感谢您的帮助。

dlmread的使用,是你错误的原因,可以在这个answer中找到。注意

x = csvread (filename, dlm_opts)

等同于

x = dlmread (filename, "," , …)

textread返回的项目

val1 = 
{
  [1,1] = a
  [2,1] = 1
  [3,1] = e
}

是一个cell array of strings。使用元胞数组,因为矩阵必须由长度相等的向量组成,而当操作一个可变大小的单词时,情况并非如此。如果将单词存储在矩阵中,则所有 rows/columns 都必须是 "padded",与存储的最长单词一样长。

将元胞数组 (val1) 特定索引处的元素转换为您使用的向量 cell2mat

vec=cell2mat(val1(index));