Math 倍频程:我收到一个维度错误:cat:执行cell2mat时维度不匹配

Math 倍频程:我收到一个维度错误:cat:执行cell2mat时维度不匹配,math,octave,Math,Octave,我有一个单元格数组(类单元格),它的维数我试图转换为双精度。 我使用cell2mat时出现尺寸错误。(第1行和kol 1不是数字) 我试过cell2mat: debug> `cell2mat{1 2 3; 4 5 6}` ans = 1 2 3 4 5 6 如果您有任何建议,我将不胜感激 这里缺少很多信息,但我怀疑你的问题归结为以下三个事实 标准数组必须始终包含相同类型的元素。例如,它不能在一个索引中包含“字符串”,在另一个索引中包含“数字”;这就是单元格

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

我试过cell2mat:

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

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

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

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

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

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

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

    如果没有(请注意未添加的日期):

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


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

    您可以显示单元格数组的一些内容吗?(和他们的类型?)每一行是这样的:2008-02-14,33.0801330.6899请使用添加更新和澄清问题本身。另外,数据的类型是什么?根据您迄今为止向我们展示的内容,只有当您的注释中的数值实际上是字符串时,才会发生此错误。我无法显示多行,因为此注释框不允许正确的格式设置。它是一个逗号分隔的csv,有几百行。我将其以csv格式导出为Office Calc导出,并使用此处描述的csc2cell函数阅读:请不要将添加内容作为评论或答案发布到您的问题中。相反,编辑你的问题。在问号底部的标签下面有一个链接。您也可以单击此链接:。
    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
    
    debug> `cell2mat{1 2 3; 4 5 6}`
    ans =
       1   2   3
       4   5   6
    
    > 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