在矩阵中查找元素

时间:2017-05-10 22:24:07

标签: matlab search matrix

我在尝试在矩阵中查找元素时遇到了问题。这是我的矩阵:

-106.283377231500   52.3353138528333
-106.283377140333   52.3353249450000
-106.283377238667   52.3353357275000
-106.283377487833   52.3353471300000
-106.283377541833   52.3353580896667
-106.283377776667   52.3353689166667
-106.283377591333   52.3353798870000
-106.283377810667   52.3353914036667
-106.283377711500   52.3354019898333
-106.283377595333   52.3354132866667
-106.283377653833   52.3354257965000
-106.283377829333   52.3354378235000
-106.283377616500   52.3354498565000
-106.283377619333   52.3354624370000
-106.283377568000   52.3354743758333
-106.283377423333   52.3354863070000
-106.283377382667   52.3354984161667
-106.283377054833   52.3355106328333
-106.283377120000   52.3355230306667
-106.283377177833   52.3355353523333
-106.283377172667   52.3355468450000

我知道我在行号9中有这些值:

-106.283377711500   52.3354019898333

我们应该能够通过使用此命令找到这个问题:

 data(:,2)==52.3354019898333

但这给了我一个零阵列!奇怪的是我只能通过相同的命令找到第一个元素:

data(:,1)==-106.2833777115

此外,我可以通过此命令获取我正在寻找的号码:

data(9,2)

我做错了什么?或者这是一个错误吗?

1 个答案:

答案 0 :(得分:1)

在寻找真实值时,考虑数值精度总是一个好主意。如果你计算data(9,2) - 52.3354019898333,Matlab可能会告诉你它不是绝对的0.实现目标的一种方法是授权实际值和请求值之间的微小差异:

abs(data(:,2) - 52.3354019898333) < sqrt(eps)