我有一个三维数组,我希望能够找到一个特定的值并获得三个坐标。
例如,如果我有:
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)
的变化,但我还没有得到任何地方。
谢谢!
您查找的函数是ind2sub
:
[i,j,k]=ind2sub(size(A), find(A==7))
i =
1
j =
2
k =
2
可以使用find查找数组中的非零元素,但这需要一些算术运算。来自文档:
[row,col] = find(X, ...)
返回对象的行索引和列索引在矩阵x中的非零项时,此语法特别有用处理稀疏矩阵。如果X是N维数组,且N>col包含列的线性下标。例如,对于a5 × 7 × 3的数组X在X(4,2,3)处有一个非零元素,find返回4也就是说,(page 1中的7列)+ (page 1中的7列)第2页)+(第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);