怎么用matlab查找矩阵满足某个条件的元素

如下:
X=[3,2,6;3,7,2,8,9,13];
怎样查找矩阵中大于3,小于12的元素,并返回元素下标与元素值

第1个回答  推荐于2017-04-12
找下标:ind = find(X>3&X<12)
ind =
3 5 7 8
相应的值 X(ind)
ans =
6 7 8 9追问

我是这样求的,你帮我看一下问题出在哪个地方了?谢谢了
X=[3,2,6;3,7,2;8,9,13]
[m,n]=find(X>3&X<12)
X(m,n)

追答

必须用线性索引,行列下标索引的话有问题。举一个你容易理解的例子x(1:3,1:3)取的是x第1到3行,第1到3列的3*3矩阵,而不是x(1,1),x(2,2),x(3,3)这三个值。因此你上面X(m,n)是一个范围内的矩阵,而不是你要的大于3小于12的X值。这时候需要用sub2din把[m,n]转成线性索引:
>> ind = sub2ind(size(X),m,n)
ind =
3
5
6
7
>> X(ind)
ans =
8
7
9
6
或者你一开始就:ind = find(X>3&X<12)
如果想得到行列形式的索引:[m,n] = ind2sub(size(X),ind)
即可。

本回答被提问者采纳
第2个回答  2011-11-04
我勒个搽 你循环下 当大于3,小于12时把当前坐标返回不就好了
第3个回答  2011-11-04
find(X>3&X<12)

参考资料:fi

相似回答