我在尝试在矩阵中查找元素时遇到了问题。这是我的矩阵:
-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)
我做错了什么?或者这是一个错误吗?
答案 0 :(得分:1)
在寻找真实值时,考虑数值精度总是一个好主意。如果你计算data(9,2) - 52.3354019898333
,Matlab可能会告诉你它不是绝对的0.实现目标的一种方法是授权实际值和请求值之间的微小差异:
abs(data(:,2) - 52.3354019898333) < sqrt(eps)