繁体   English   中英

knnsearch(X,Y)没有返回X的元素

[英]knnsearch(X,Y) not returning an element of X

我试图在我的一些代码中实现k近邻函数。 我遇到了一个我无法理解的奇怪问题。

X=[1,4,51,3,2,4,6]' % a column vector
knnsearch(X,8) %returns 7!

我测试了这一点,通常knnsearch(X,Y)将返回Y中给定的元素, 在X的近邻。 但是当然'7'根本不是X中的元素,但是knnsearch(X,8)正在返回7.我错过了什么?

它返回索引不是元素本身。

>> X = [1, 12, 33, 14]';
>> nn = knnsearch(X, 8);
>> X(nn) %Will print 12

nn保存索引(在本例中为2 )。

所以X(nn)会给你12 ,这是预期的答案。

来自文档

IDX = knnsearch(NS,Y)

[...]

IDX is a column vector with ny rows, where ny is the number of rows in Y. 
Each row in IDX contains the index of observation in NS.X which has the 
smallest distance to the corresponding observation in Y.

knnsearch不返回最近邻居,它返回最近邻居的索引 在你的例子中, 6是与8最接近的元素,它在索引7 ,所以你得到7

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM