[英]How to convert a cell array of 2D matrices into a multidimensional array in MATLAB
在 MATLAB 中,我有一個定義的元胞數組C
size(C)
= 1 x 150
此單元格C
每個矩陣T
的大小
size(C{i})
= 8 x 16
我想知道是否有一種方法可以定義大小為 8 x 16 x 150 的新多維 (3D) 矩陣M
那就是當我寫命令size(M)
我得到 8 x 16 x 150
謝謝! 期待您的回答
如果我正確理解您的問題,您有一個包含 150 個單元格的單元格數組,每個單元格元素為8 x 16
,並且您希望在第三維中將所有這些矩陣堆疊在一起,以便您擁有一個大小為8 x 16 x 150
的 3D 矩陣8 x 16 x 150
。
這是一個簡單的:
M = cat(3, C{:});
這種語法可能看起來很奇怪,但它非常有效。 命令cat
執行矩陣的連接,其中第一個參數是您要連接到的維度...所以在您的情況下,這是第三個維度,后面的參數是您要連接以生成最終矩陣的矩陣。
執行C{:}
會創建所謂的逗號分隔列表。 這相當於在 MATLAB 中輸入以下語法:
C{1}, C{2}, C{3}, ..., C{150}
因此,通過執行cat(3, C{:});
,你真正在做的是:
cat(3, C{1}, C{2}, C{3}, ..., C{150});
因此,您將獲取所有 150 個單元格並將它們在第三維中連接在一起。 但是,不必輸入 150 個單獨的單元格條目,而是通過C{:}
創建一個逗號分隔的列表來封裝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.