兩個問題:單元陣列語法
1)我發現了一段代碼說像cellArr{x}{y}{3,8} = 1.0;
,我想知道是什麼{3,8}
手段。該程序將一組連接圖中的各個節點連接在一起。在這裏,我們會說「在圖的集合x中,圖3的y從3到8的連接具有1.0的頂點標籤。但是,一般來說MatLab中的語法{3,8}
是什麼意思?
2)這可能不是這個問題的地方,但我真的應該使用單元格數組,如果我知道我總是會有頂點值,即小數/浮點數。矩陣會更好,因爲我知道我只會有一個單一的數據類型?
謝謝:)。
兩個問題:單元陣列語法
1)我發現了一段代碼說像cellArr{x}{y}{3,8} = 1.0;
,我想知道是什麼{3,8}
手段。該程序將一組連接圖中的各個節點連接在一起。在這裏,我們會說「在圖的集合x中,圖3的y從3到8的連接具有1.0的頂點標籤。但是,一般來說MatLab中的語法{3,8}
是什麼意思?
2)這可能不是這個問題的地方,但我真的應該使用單元格數組,如果我知道我總是會有頂點值,即小數/浮點數。矩陣會更好,因爲我知道我只會有一個單一的數據類型?
謝謝:)。
Cell arrays可具有多個維度,並且因此它們可以是indexed與多個標像任何其他multidimensional array。語法{3,8}
正在索引一個(可能是)2-D單元陣列,在第三行和第八列中獲取單元的內容。
有兩種使用單元陣列主要有兩個原因:不同類型的的存儲數據或不同尺寸的存儲數據。假設x
和y
是您的示例中的標量索引,那麼cellArr
是一個單元格數組,其索引爲x
的單元格包含另一個單元格數組,其單元格編號爲y
,其中包含一個存儲頂點標籤的2-D單元格數組。現在
,如果您的頂點的標籤都具有相同的數據類型和都只有單非空(即不[]
)值,則在最低水平的2-d單元陣列也可以變成2-d數值數組,而你的索引將是這樣的:現在
cellArr{x}{y}(3,8) = 1.0; %# Note the use of() instead of {}
問題就變成如何處理x
和y
索引電池陣列的兩個封裝套。如果每個可通過y
被索引細胞包含2- d數字數組所有相同尺寸和類型的,則該單元陣列可以變成3-d數字數組,可以被索引,像這樣:
cellArr{x}(3,8,y) = 1.0; %# Here I've chosen to use y as the third dimension
最後,如果每一個可以通過x
被索引細胞含有3- d數字數組,其再次所有相同尺寸和類型,那麼cellArr
也可以變成一個4 d數字數組,可以被索引等所以:
numArr(3,8,y,x) = 1.0;
您可以更改下標的順序(即尺寸爲numArr
),但我把x
和y
放在最後,所以如果你要索引一個像numArr(:,:,y,x)
這樣的頂點標籤的子數組,它會把它作爲一個二維數組返回。如果您已將索引排序,以便您索引像numArr(x,y,:,:)
這樣的頂點標籤的子數組,則它將返回結果作爲一個四維數組,其中包含兩個主要單獨維(您將不得不使用諸如SQUEEZE之類的函數刪除) 。
{3,8}
是單元陣列索引,就像{x}
和{y}
一樣。所以cellArr是細胞載體的細胞載體。其中一種細胞載體索引爲{x}
。該單元矢量本身是由{y}
索引的單元2d矩陣的矢量。最後,該單元矩陣由{3,8}
索引,即第3行和第8列。numericArray[x, y, 3, 8]
。
「與每個單元存儲另一個單元陣列......每個單元存儲另一個單元陣列......每個單元存儲一個2-D單元陣列」 - 我相信這是不正確的,因爲單元陣列可以在任何單元中存儲任何數據類型和大小。在這種特殊情況下,我們可以說在'cellArr'中由標量數字'x'索引的單元格包含另一個單元格數組等。 – yuk 2011-02-24 20:32:41
@yuk:的確,我基於這樣的假設進行概括:對於OP描述的特定問題,每個單元格陣列*可能*存儲相同類型的數據。但是,我會按照您的建議來細化文本。 – gnovice 2011-02-24 21:41:01