在 3D 矩阵中查找索引

Find indices in a 3D matrix

我有 2 个 3D 矩阵:

A=[19,18,17;16,15,14;13,12,11];

A(:,:,2)=[9,8,7;6,5,4;3,2,1];

B=sort(A,3);

有输出

A(:,:,1) =


19 18 17

16 15 14

13 12 11


A(:,:,2) =


9 8 7

6 5 4

3 2 1


B(:,:,1) =


9 8 7

6 5 4

3 2 1


B(:,:,2) =


19 18 17

16 15 14

13 12 11

我想在 A 中找到 B 的矩阵之一的第 3 个坐标。

所以

find(A==B(:,:,1))

答案是

ans =



10

11

12

13

14

15

16

17

18

但是,我希望答案是2,因为这个矩阵在A的第三个维度的第二个位置:A(:,:,2)

我该怎么做?

我尝试了 find(A(~,~,:)==B(:,:,1)) 但出现了错误。

您可以使用 ind2sub 将线性索引(find() 为您提供)转换为每个维度的索引:

A=[19,18,17;16,15,14;13,12,11];

A(:,:,2)=[9,8,7;6,5,4;3,2,1];

B=sort(A,3);

lin_idx = find(A==B(:,:,1));

[row,col,page] = ind2sub(size(A),lin_idx);  % page is 2 everywhere

我建议阅读 this Q/A 以获取有关 MATLAB 支持的不同索引类型的更多信息。