在3D矩阵中查找索引

时间:2019-12-16 10:19:54

标签: matlab matrix find matrix-indexing

我有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

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

如此

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

答案是

ans =



10

11

12

13

14

15

16

17

18

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

我该怎么做?

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

1 个答案:

答案 0 :(得分:3)

您可以使用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支持的不同索引类型的更多信息。