MATLAB:用另一个 3d 矩阵索引 3d 矩阵

MATLAB: indexing a 3d matrix with another 3d matrix

假设我有两个相同维度 (3x3x2) 的 3D 矩阵:

A =
ans(:,:,1) =
0 0 0
0 0 0
0 0 0
ans(:,:,2) =
0 0 0
0 0 0
0 0 0
B =
ans(:,:,1) =
0 1 0
0 1 0
0 1 0
ans(:,:,2) =
1 0 0
1 0 0
0 0 1

我想索引 A 的最后一页(第三维),其中 B 的相应页面等于 1,并将这些值变成 2,这样 A 就变成:

A =
ans(:,:,1) =
0 0 0
0 0 0
0 0 0
ans(:,:,2) =
2 0 0
2 0 0
0 0 2

我该怎么做?有没有简单的方法?

这可能是一种将 A 的第三维最后一页中的元素设置在 B 的第三维最后一页具有 1 的位置的方法'小号-

A(find(B(:,:,end)==1) + numel(B) - numel(B(:,:,1))) = 2

样本运行-

%// Starting input, A
A(:,:,1) =
    0.2187    0.1097    0.4046    0.3658
    0.1058    0.0636    0.4484    0.7635
A(:,:,2) =
    0.6279    0.9329    0.1920    0.6963
    0.7720    0.9727    0.1389    0.0938
A(:,:,3) =
    0.5254    0.8611    0.3935    0.7413
    0.5303    0.4849    0.6714    0.5201

%// Input, B    
B(:,:,1) =
     2     2     1     1
     1     1     3     2
B(:,:,2) =
     3     3     3     2
     2     2     3     1
B(:,:,3) =
     1     1     3     3
     2     1     2     2

%// Output, A
A(:,:,1) =
    0.2187    0.1097    0.4046    0.3658
    0.1058    0.0636    0.4484    0.7635
A(:,:,2) =
    0.6279    0.9329    0.1920    0.6963
    0.7720    0.9727    0.1389    0.0938
A(:,:,3) =
    2.0000    2.0000    0.3935    0.7413
    0.5303    2.0000    0.6714    0.5201