【MATLAB】K近邻算法——knnsearch函数及其用法

参考官方文档学习,英文部分是官方文档的描述

1、IDX = knnsearch(X,Y)

IDX = knnsearch(X,Y)   finds the nearest neighbor in  X for each point in Y.  IDX is a column vector with my rows. Each row in IDX contains the index of nearest neighbor in X for the corresponding row in Y.

        在X中,为Y的每一个点找最近邻居。其中,IDX是一个列向量,每一行表示的是Y在X中的最近邻所对应的在X中的索引值。

clc

X = [1 2;
     3 1;
     5 8;
     4 10;
     7 4];
Y = [5 7;
     1 3];

IDX = knnsearch(X,Y);
disp(IDX);

在这个例子中,y的两个点在x中的最近邻分别是第三个和第一个。所以会返回在x中的索引 3和1.

 2、[IDX,D] = knnsearch(X,Y)

returns an my-by-1 vector D containing the distances between each observation in Y and the corresponding closest observation in X. That is, D(i) is the distance between X(IDX(i),:) and Y(i,:)

IDX 同上述表示一样,D返回的是Y在X中的最近邻与Y的距离

3、[IDX,D] = knnsearch(X,Y,'Name',Value)

accepts one or more optional comma-separated name-value pair arguments. Specify Name  inside single quotes. knnsearch does not save a search object.

clc

X = [1 2;
     3 1;
     5 8;
     4 10;
     7 4];
Y = [5 7;
     8 5];

[IDX,D] = knnsearch(X,Y,'k',3);
disp(IDX);
disp(D);

以这个例子为例,有两个Y,表达式3表示的是为每个Y找三个最近邻。

这个的意思还是与上面表达的一样。需要解释的是位置关系的事,我们拿距离D来解释。有两个Y所以有两行,每个Y找三个最近邻,所以一行有三个,在这里,距离按照从小到大排序

4、动手实现,才更助于理解呀~

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MATLAB中的knnsearch函数是用于最邻近搜索的函数。它可以在给定一个点集S和一个目标点q的情况下,找到距离q最近的点。该函数的语法如下: \[idx,d\] = knnsearch(X,Y,'k',value) 其中,X是被搜索的点集,Y是要查找的点或者点集。如果Y是由n个点构成的点集,那么Y可以表示为一个n×3的矩阵。如果要查找一个点,可以具体到每个点,例如Y(1,:)表示查找第一个点。如果要查找多个点,可以将n'×3的矩阵送入函数,例如查找第一到第三个点可以使用Y(1:3,:)。value表示想要查找的最近邻点的个数。 函数的返回值是两个矩阵,idx表示距离目标点最近的点在X中的索引,d表示目标点与最近邻点之间的距离。可以使用disp函数来显示这两个矩阵的值。 例如,如果有一个点集X和一个点集Y,可以使用以下代码调用knnsearch函数: ```matlab X = \[1 2; 3 1; 5 8; 4 10; 7 4\]; Y = \[5 7; 8 5\]; \[idx,d\] = knnsearch(X,Y,'k',3); disp(idx); disp(d); ``` 这段代码将会找到Y中每个点距离X中最近的3个点,并将结果分别存储在idx和d中。 #### 引用[.reference_title] - *1* [MATLAB knnsearch详解](https://blog.csdn.net/JAT0929/article/details/104206260)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [matlab——knnsearch用法介绍](https://blog.csdn.net/qq_42537872/article/details/126141946)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【MATLAB】K近邻算法——knnsearch函数及其用法](https://blog.csdn.net/xing09268/article/details/127439706)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值