【问题标题】:Read multi format data in Octave在 Octave 中读取多格式数据
【发布时间】:2016-11-13 12:55:49
【问题描述】:

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

提前感谢您的帮助。

【问题讨论】:

  • 你想要的输出是什么?

标签: matlab csv parsing octave


【解决方案1】:

可以在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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-29
    • 2014-10-02
    • 1970-01-01
    • 2021-08-27
    • 2010-09-09
    • 2021-08-04
    • 2014-09-28
    • 1970-01-01
    相关资源
    最近更新 更多