MATLAB:在多维数组中查找数值的坐标

7
我有一个三维数组,想要查找特定值并获取三个坐标。例如,如果我有:
A = [2 4 6; 8 10 12] A(:,:,2) = [5 7 9; 11 13 15]
我想要找到7的位置,希望得到坐标i=1、j=2、k=2。我尝试了多种变化的find(A==7),但是一直没有成功。
谢谢!
2个回答

12

您要查找的函数是 ind2sub

[i,j,k]=ind2sub(size(A), find(A==7))
i =
     1
j =
     2
k =
     2

0

您可以使用find函数来查找数组中的非零元素,但需要进行一些算术运算。根据文档:

[row,col] = find(X, ...) 返回矩阵X中非零元素的行和列索引。当使用稀疏矩阵时,此语法特别有用。如果X是一个N维数组,其中N > 2,则col包含列的线性索引。例如,对于一个5x7x3的数组X,在X(4,2,3)处有一个非零元素,则find返回4在row中,16在col中。也就是说,(第1页有7列)+(第2页有7列)+(第3页有2列)= 16。

如果矩阵M的维度为a x b x c,则某个值x的索引(i,j,k)如下:

[row,col] = find(A==x);
i = row;
j = mod(col,b);
k = ceil(col/b);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接