簡體   English   中英

Octave :我收到一個尺寸錯誤:cat:執行 cell2mat 時尺寸不匹配

[英]Octave : I receive a dimension error: cat: dimension mismatch when doing cell2mat

我有一個具有維度的元胞數組(類元胞),我嘗試將其轉換為雙精度數。 使用 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

我將不勝感激任何建議。

這里缺少很多信息,但我懷疑您的問題歸結為以下三個事實。

  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方法相應地處理它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM