2013-05-30 216 views
1

我仍然是一個新手,我很可能有一個關於矩陣數組的非常簡單的問題。我有n行類似以下矩陣:Matlab填充矩陣數組

>> matrix 
1 678 543 
2 676 541 
3 543 987 
4 543 98 
1 433 54 
2 908 32 
3 457 54 
4 235 21 

如何創建大小相等的矩陣陣列? 即array{i,1}

這是問題的複製: Array of Matrices in MATLAB ,可能很多人的。

對我而言,不清楚的是如何填充我的固定維矩陣數組。這樣

>>array{1,1} 
1 678 543 
2 676 541 
3 543 987 
4 543 98 

這裏是我的嘗試:
找到所有在matrix1柱和那些的matrixsize。 創建cell數組,看看每一行,如果它等於1創建一個array{i,1}零等於我想創建的矩陣的大小(在我的例子中爲4x3)。
如果不等於1則向陣列中插入矩陣的前四個值。

有沒有更快的方式來做到沒有循環?

+1

[這個答案](http://stackoverflow.com/q/466972#467199)展示瞭如何另一個矩陣添加到您的3-d矩陣集合。您也可以使用[單元格陣列](http://www.mathworks.com/help/matlab/cell-arrays.html),但效率較低。 –

+0

我不知道這是你喜歡什麼,但如果你喜歡array = matrix(1,:),它會將第一行中的所有元素複製到一個數組中。 – Akatosh

+0

@EitanT:謝謝,但我想使用單元格數組,以便能夠更改代碼,以防萬一我有不同的維矩陣。 – seli

回答

1

您還可以使用mat2cell

mat2cell(matrix, [4 4]) 
+0

這將不起作用,因爲每個子矩陣的行不是連續的。至少必須重新塑造原始矩陣。 –

+0

@EitanT我不確定你的意思。那麼這個矩陣沿着它的第一維分裂成一個「4x3」和另一個「4x3」,對吧? – pm89

+0

我認爲每個矩陣的第一列中的所有值都應該相等。所以第一個矩陣應該包含第一列中所有具有「1」的行,第二個矩陣應該包括第一列中所有具有「2」的行,_etc _... –