在 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 支持的不同索引类型的更多信息。
我有 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 支持的不同索引类型的更多信息。