matlab怎么找三维数组中数的位置 用find函数可以吗

比如一个480*640的三维矩阵 用find查找64这个数的位置 却出现这种情况,j的位置超出了640 是什么意思,正确的查找方法是什么,求大神帮忙 高分答谢

直接用[i,j] = find(c==64)
你这应该不是三维矩阵额,只有两个维度啊,480*640
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-04-04
[row,col,v] = find(X, ...)
返回X中非零元素的一个列或行向量v,同时返回行和列的索引值。
如果X是一个逻辑表示,则v是一个逻辑矩阵。
输出向量v包含通过评估X表示得到的逻辑矩阵的非零元素。
例如,
A= magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
[r,c,v]= find(A>10);
r', c', v'
ans =
1 2 4 4 1 3 (按列)
ans =
1 2 2 3 4 4 (按列)
ans =
1 1 1 1 1 1
这里返回的向量v是一个逻辑矩阵,它包含N个非零元素,N=(A>10)
所以不对的
不防试试下面
[i,j,z]=ind2sub(size(c),find(c==64))
第2个回答  推荐于2018-02-12
[row,col,v] = find(X, ...)
返回X中非零元素的一个列或行向量v,同时返回行和列的索引值。
如果X是一个逻辑表示,则v是一个逻辑矩阵。
输出向量v包含通过评估X表示得到的逻辑矩阵的非零元素。
例如,
A= magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
[r,c,v]= find(A>10);
r', c', v'
ans =
1 2 4 4 1 3 (按列)
ans =
1 2 2 3 4 4 (按列)
ans =
1 1 1 1 1 1
这里返回的向量v是一个逻辑矩阵,它包含N个非零元素,N=(A>10)
所以不对的
不防试试下面
[i,j,z]=ind2sub(size(c),find(c==64))追问

请问 最后一条语句是什么意思 有什么样的用法
还有除了最后一条语句 前面的有用吗

追答

前面的是举例说明你错误的原因,最后一条可以求64在三维数组c中的位置。ind2sub可以将单个数字的索引位置转为哪行哪列,,。

本回答被提问者和网友采纳
相似回答