1. 程式人生 > >matlab cell(元胞陣列)關於元胞和陣列的深入理解 和 元胞陣列中個別元素的刪除

matlab cell(元胞陣列)關於元胞和陣列的深入理解 和 元胞陣列中個別元素的刪除

深入理解元胞陣列

matlab 中的 cell 其實也是個陣列,不過一個cell變數後邊既可以接小括號“()”,又可以接大括號"{}",這有什麼區別呢?

在 matlab 中,所有的陣列都可以用“(i)”來表示其中的第i個元素,元胞陣列還可以用“{i}”,表示第i個cell內部。

比如我們想定義一個元胞陣列 a,並想給 a 的第一個元素賦值一個矩陣 [1 2 3],則有兩種辦法:

(1)直接給 a 的第一個元胞內部賦值一個矩陣 [1 2 3]:

a{1} = [1 2 3];

(2)給 a 的第一個原素賦值一個元胞,元胞內部是矩陣 [1 2 3]:

a(1) = {[1 2 3]}

{[1 2 3]} 表示矩陣 [1 2 3] 放在一個元胞內,然後在給陣列 a 第一個元素,因為這是個陣列,所以 a 是一個元胞陣列。

上面兩種方式等價。

刪除元胞陣列中的元素

那麼如果我們想刪除一個元胞陣列的一個元素怎麼辦呢,比如第二個cell,我剛開始是這麼做的,不知道和我一樣的人多不:

a{2} = [];

但是實際上這麼做並不會刪除第二個元胞,而是將第二個元胞的內容變成了空的。如果理解我前面說的,其實也就知道了,就把 a 當做一個普通的陣列,給其中的一個元素賦一個空值就行了,也就是用小括號“()”,所以正確的做法應該是這樣的:

a(2) = [];