matlab中,用find找某个元素,为什么有些能找到,有些明明有却找不到?

来源:百度知道 编辑:UC知道 时间:2024/09/25 01:26:51
例如:A=[25 36 24 58];找36能找到,24却找不到?
(当然不是这个例子本身不行,而是一个大的矩阵,且我确认里面的确有这个找不到的元素)
例如:
Total =下面这个矩阵
7.4000 0.0025 0 0 6.4730
7.5500 0.0025 0 0 6.7548
7.7000 0.0025 0 0 7.0555
7.8500 0.0025 0 0 7.3824
8.0000 0.0025 0 0 7.7412
8.1500 0.0025 0 0 8.1349
7.4000 0.0050 0 0 6.4927
7.5500 0.0050 0 0 6.7838
7.7000 0.0050 0 0 7.0915
7.8500 0.0050 0 0 7.4232
8.0000 0.0050 0 0 7.7849
8.1500 0.0050 0 0 8.1799
……后面还有很多

用phlevel=find(Total(:,1)==7.70)找第一列中的7.70,可以找到多个
但phlevel=find(Total(:,1)==7.55)却一个也找不到。
why
郁闷
谢谢!

7.55应该不是精确值,只显示出前几位,但它可能是7.5500000034类似于这样。
那判断用==就不对了。

可以这样
phlevel=find(abs(Total(:,1)-7.55)<1e-5)

里面的1e-5就是精度,你可以根据需要取更大或者更小,比如0.01, 1e-15, eps都可以,看需要多大精度。

矩阵有几行几列,是不是find的规则没设定好

语句没错么?
我现在20209*19这样的矩阵用find都可以啊

可能你的语句不正确,就用你给出的例子,输入b=find(A==36);那么b输出的就是A中元素36所在的位置,再输入A(b),显示就是36了。

是不是因为数据截断的问题,比如7.5500001显示为7.5500,并不等于7.55,最好用算式代替phlevel=find(Total(:,1)==7.55)中的7.55