2012-01-29 131 views
21

使用括號()和大括號{}訪問單元格數組中元素之間的區別?使用大括號和括號訪問單元格元素之間的差異

例如,我試圖使用cell{4} = []cell(4) = []。在第一種情況下,它的4個元件設置爲[],但是在第二種情況下,消滅了電池元件,即,通過1

+0

[for循環中的MATLAB和單元格數組處理]的可能重複(http://stackoverflow.com/questions/4635052/matlab-and-cell-array-handling-in-for-loop) – Jonas 2012-01-29 17:45:30

+0

數學鏈接[訪問單元格陣列](http://www.mathworks.com/help/techdoc/matlab_prog/br04bw6-98.html)以一種非常清晰的方式解釋,以便清除您的概念,然後您就可以使用陣列。 – SKM 2012-01-29 17:32:34

回答

59

將細胞陣列想象成一個規則的同質陣列,其元素全部爲cells。圓括號(())僅訪問cell包裝器對象,而使用捲曲護腕訪問元素({})則給出單元格中包含的實際對象。

例如,

A={ [5,6], 0 , 0 ,0 }; 

將看起來像這樣:

enter image description here

使得等於[]用括號的元素的語法實際上是刪除該元素的請求,所以,當你問到做foo(i) = []您刪除個細胞。它不是一個賦值操作,而是一個RemoveElement操作,它使用與賦值相似的語法。

但是,當你做foo{i} = []你正在分配給第i個單元一個新值(這是一個空數組),從而清除該單元格的內容。

+3

您可以將單元格視爲列表,其中存儲指向其他某些內容的指針。用()你得到指針,{}你得到指針指向的東西。 – gstar2002 2012-11-04 00:14:06

+1

查看它的另一種方式是,分配給'[]'將刪除您分配的任何東西。因此,'foo(i)= []'確實移除了第i個單元,而'foo {i} = []'移除了第i個單元的內容。 (沒有留下任何東西('[]')) – 2013-09-30 08:40:14

+0

查看單元陣列的這個Octave文檔(與MATLAB兼容;))https://www.gnu.org/software/octave/doc/v4.0.1/Indexing-細胞Arrays.html#索引 - 細胞陣列] – 2016-06-22 13:40:35

3

降低電池元件計數參見this link幫助。正如你所看到的,用括號訪問(),給你一個細胞(即子小區)的一個子集,而花括號{}爲您提供您嘗試訪問該單元格的內容。