2017-03-27 250 views
1

我找不到满意的答案。如果A是大小(M,N,k)的三维矩阵,Z是尺寸为m×n的2D矩阵,我想提取s定义像这样(1和k之间的值的整数):从3D矩阵和matlab索引数组中提取2D矩阵

for i=1:m 
    for j=n 
     S(i,j) = A(i,j,Z(i,j)); 
    end 
end 

有没有一种高效(矢量化)的方式来做到这一点?

预先感谢您

回答

2

则可以使用linear indexing如下操作:

S = reshape(A((1:m*n).' + m*n*(Z(:)-1)), m, n); 
+0

你写,我压抑的)和编辑的消息。 – yann