从matlab中的三维矩阵和索引数组中提取二维矩阵

时间:2017-03-27 10:10:11

标签: matlab matrix vectorization

我找不到令人满意的答案。如果A是大小为(m,n,k)的3D矩阵,则Z是大小为mxn的二维矩阵(值为1到k的整数),我想提取如下定义的S:

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

是否有一种有效的(矢量化)方法可以做到这一点?

提前谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用linear indexing执行此操作,如下所示:

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