【问题标题】:Octave : I receive a dimension error: cat: dimension mismatch when doing cell2mat八度:我收到一个尺寸错误:猫:做 cell2mat 时尺寸不匹配
【发布时间】:2020-02-27 19:42:02
【问题描述】:

我有一个单元格数组(类单元格),我尝试将其转换为双精度。 使用 cell2mat 时出现尺寸错误。 (第 1 行和 kol 1 不是数字)

debug> `class(mycsvdata)`
ans = cell

CCC=cell2mat(mycsvdata(2:end,2:end))
error: cat: dimension mismatch
error: called from
cell2mat at line 80 column 11
leesCsvPuur at line 7 column 2
verwerkStooq at line 37 column 8
handleStooq at line 77 column 1
testinvoer03 at line 72 column 1

debug> `size(mycsvdata)`
ans =
   9   7

我试过 cell2mat :

debug> `cell2mat{1 2 3; 4 5 6}`
ans =
   1   2   3
   4   5   6

如果有任何建议,我将不胜感激。

【问题讨论】:

  • 你能显示你的元胞数组的一些内容吗? (以及它们的类型?)
  • 每一行就像:2008-02-14,33.0801,330.6899
  • 请使用edit 为问题本身添加更新和说明。另外,数据的类型是什么?从您到目前为止向我们展示的内容来看,只有当您评论中的数值实际上是字符串时,才会发生此错误。
  • 我不能显示多于一行,因为这个评论框不允许正确的格式。它是一个逗号分隔的 csv,有几百行。我将其导出为 csv 格式的 Office Calc 导出,并使用此处描述的 csc2cell 函数读取它:github.com/octave-de/macgyver_utils/blob/master/csv2cell.m
  • 请不要将您的问题添加为 cmets 或答案。相反,请编辑您的问题。问题标签底部的标签下方有一个链接。您也可以点击此链接:edit

标签: math octave


【解决方案1】:

这里缺少很多信息,但我怀疑您的问题归结为以下三个事实。

  1. 标准数组必须始终包含相同类型的元素。它不能,例如在一个索引中包含一个“字符串”,在另一个索引中包含一个“数字”;这就是元胞数组的用途。

  2. 根据您的警告/错误级别,尝试通过 cell2mat 将包含此类混合元素的元胞数组转换为标准数组应该失败,或者将所有元素转换为它们的最小公分母。例如。如果您同时拥有“日期字符串”(如“2011-01-02”)和“数字”,它可能会首先将“数字”解释为 ascii 字符代码。

  3. 八度音程中的字符串只是字符数组。如果您尝试垂直连接两个长度不等的字符串,则会收到关于尺寸不匹配的错误,因为连接中的结果数组始终需要是正确的矩形。

例如如果所有字符串大小相同(注意数字转换)

> c = { '2011-01-01', 98.1; '2011-01-20', 97 };
> C = cell2mat(c)
warning: implicit conversion from numeric to char
  C =
    2011-01-01b
    2011-01-20a

如果不是(请注意未填充的日期):

> c = { '2011-01-01'; '2011-01-2' };
> C = cell2mat(c)
error: cat: dimension mismatch
error: called from
    cell2mat at line 80 column 11

我不知道您的 csv2cell 操作产生的元胞数组的确切性质,但我敢打赌类似于上述情况的事情正在发生。

一般来说,立即通过 cell2mat 进行转换可能不是正确的方法。相反,您可以收集所有列以分隔变量,然后通过cell2matcellfun 方法相应地处理它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 2017-09-12
    • 2012-09-11
    • 2014-12-14
    • 2022-09-27
    相关资源
    最近更新 更多