我有一個大的D
大小爲MxNxK的矩陣。給定尺寸爲M×N的二進制掩碼B
,我想矩陣D
分成兩個子矩陣:D0
和D1
,在這樣一種方式,矩陣D0
具有與0's
在二進制掩碼相關聯矩陣D
的值。這同樣適用於D1
,但在二進制掩碼中使用了1's
。 目前,我正在通過使用循環解決這個問題,但我想知道是否有更有效的方法來解決這個問題?使用二進制掩碼從大型3d矩陣中拉取子集 - Matlab
mat_zeros = [];
mat_ones = [];
for m=1:M
for n=1:N
matval = matrixbig(m,n,:);
matval = matval(:)'; % mapping matval to a K-dimensional vector
if (binmask(m,n) == 1)
mat_ones = [mat_ones; matval];
elseif (binmask(m,n) == 0)
mat_zeros = [mat_zeros; matval];
end
end
end
所有建議都歡迎;-)
看看這個[SO問題](http://stackoverflow.com/questions/3407525/how-can-i-index-a-3-d-matrix-with-a-2- d-mask-in-matlab) – Maurits 2012-01-06 16:38:08