1

コードの一部に k 最近傍関数を実装しようとしています。理解できない奇妙な問題に直面しています。させて

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

私はこれをテストしましたが、通常 knnsearch(X,Y) は、 Xの最近傍である Y の特定の要素に対して返されます。もちろん、'7' は X の要素ではありませんが、knnsearch(X,8) は 7 を返しています。

4

2 に答える 2

3

要素自体ではなく、インデックスを返します。

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

nnインデックスを保持します (この場合は です2)。

これX(nn)12予想される答えです。

于 2013-02-18T18:23:29.643 に答える
1

ドキュメントから:

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であり、それは index7にあるので、 を取得します7

于 2013-02-18T18:23:09.847 に答える