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

时间:2011-09-08 06:17:23

标签: arrays matlab find coordinates multidimensional-array

我有一个三维数组,我希望能够找到一个特定的值并得到三个坐标。

例如,如果我有:

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 个答案:

答案 0 :(得分:12)

您寻求的功能是ind2sub

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

答案 1 :(得分:0)

您可以使用find在数组中定位非零元素,但它需要一些算术运算。来自文档:

  

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

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

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