对于一个学校项目,我有一个简单的程序,可以比较20x20的照片。我放了20张照片,然后我放了第21张照片,与现有的20照片相比,然后弹出答案,我插入的照片(或哪一张最相似)。问题是,我的老师要我使用最近邻算法,所以我计算每张照片的距离。我把一切都搞定了,但问题是,如果照片太相似了,我就会说问哪个更接近我的照片。例如,我用2张不同的照片获得这些距离(好吧,它们几乎相同):
0 distance: 1353.07982026191
1 distance: 1353.07982026191
已经是15位,我正在使用double
类型。我在读long double
是一样的。有没有“简单”的方法来存储超过15位的数字并对它们进行数学处理?
我使用欧几里德距离计算距离 我只需要更加精确,或者那限制我可能不会通过这里,我应该和我的老师谈谈我不能比较这些相似的照片?
答案 0 :(得分:2)
我认为你需要这个:gmplib.org
还有一个指南如何在这个网站上安装这个库。
这里有关于花车的文章:http://gmplib.org/manual/C_002b_002b-Interface-Floats.html#C_002b_002b-Interface-Floats
答案 1 :(得分:2)
也许你可以使用代数方法。
让我们假设您正在尝试计算向量 x 是否更接近 a 或 b 。您需要计算的是
的符号d 2 ( x , a ) - d 2 ( x , b )
哪个变得(为了简洁,我将省略一些段落)
然后
其中仅包含应非常相似的值之间的差异。对这些小值进行求和应该比在聚合上产生更好的精度。