官方有對兩者的使用場景做簡單的比較:
另外,兩者對記憶體的要求是相似的:
但是具體記憶體佔用又有一些不同:
另外,元胞陣列也可以透過 a{1}{2}{3} 的方式直接訪問。
兩者存入資料時都具有 copy-on-write 機制,也就是說初始情況存入只是引用,被修改時轉換為複製。
簡單來說,用哪個主要取決於你的使用場景比較需要用數字索引訪問還是用名稱訪問。例如,在迴圈中動態訪問 cell 的每個部分會比較方便,直接用 C{k} 就可以,這裡 k 是迴圈變數。而 struct 的 field 要動態訪問的話比較麻煩。但是沒有這種需求的情況下 struct 一般會提供更好的可讀性。
除了這兩種之外也可以關注下 table 這種比較新引入的資料結構。
官方有對兩者的使用場景做簡單的比較:
元胞陣列與結構體陣列 - MATLAB & Simulink - MathWorks 中國另外,兩者對記憶體的要求是相似的:
結構體陣列的記憶體要求 - MATLAB & Simulink - MathWorks 中國為元胞陣列預分配記憶體 - MATLAB & Simulink - MathWorks 中國但是具體記憶體佔用又有一些不同:
MATLAB 如何分配記憶體 - MATLAB & Simulink - MathWorks 中國另外,元胞陣列也可以透過 a{1}{2}{3} 的方式直接訪問。
兩者存入資料時都具有 copy-on-write 機制,也就是說初始情況存入只是引用,被修改時轉換為複製。
簡單來說,用哪個主要取決於你的使用場景比較需要用數字索引訪問還是用名稱訪問。例如,在迴圈中動態訪問 cell 的每個部分會比較方便,直接用 C{k} 就可以,這裡 k 是迴圈變數。而 struct 的 field 要動態訪問的話比較麻煩。但是沒有這種需求的情況下 struct 一般會提供更好的可讀性。
除了這兩種之外也可以關注下 table 這種比較新引入的資料結構。