我有一个大的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