我有一个三维数组,我希望能够找到一个特定的值并得到三个坐标。
例如,如果我有:
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)
的各种变体,但我还没到任何地方。
谢谢!
答案 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);