摘要:介绍Matlab的rangesearch()函数和knnsearch()函数。

rangesearch() —— 根据给定k-维数据集,返回指定距离范围内的所有数据点

knnsearch() —— 根据给定k-维数据集,返回最近的K个数据点

%% 给定数值矩阵(input data),返回最近点的K个点
% data matrix,100 x 3,表示100个空间点
data = [hospital.Age, hospital.Weight, 66 * rand(100, 1)];
% 绘制空间点
scatter3(data(:, 1), data(:, 2), data(:, 3), 36, [1 0 0], "filled", "o")
hold on
zlabel 'Z'
% 目标点有两个
targetPoint = [50 162 21;
12 180 31];
% 绘制目标点
scatter3(targetPoint(:, 1), targetPoint(:, 2), targetPoint(:, 3), 72, "magenta", "filled", "hexagram")
hold on
tic
% 搜索目标点周围最近的3个点,返回值为data matrix的row index.
id = knnsearch(data, targetPoint, "Distance", "euclidean", "K", 3, "NSMethod", "kdtree");
toc
result = data(reshape(id,[1,6]), :);
% 绘制result 点
scatter3(result(:, 1), result(:, 2),result(:,3), 72, "blue", "filled", "square")

%% rangesearch():返回指定距离内的所有行索引
% dataCloud是10维数据,545580个数据点。
data = dataCloud(:,1:3);
% 绘制散点
scatter3(data(:, 1), data(:, 2), data(:, 3), 12, [1 0 0], "filled", "o")
hold on
zlabel 'Z'
targetPoint = [40164.5 139.539 496.914];
% 绘制目标点
scatter3(targetPoint(:, 1), targetPoint(:, 2), targetPoint(:, 3), 36, "magenta", "filled", "hexagram")
hold on
tic
% knn search using input data,直接给定数据集,搜索半径为50
id = rangesearch(data(:, 1 : 3), targetPoint, 50, "NSMethod", "kdtree", "Distance", "euclidean");
toc
result = data(id{1}, :);
% 绘制result 点
scatter3(result(:, 1), result(:, 2), result(:, 3), 72, "blue", "filled", "square")

%% 先创建KDtree model ,以此为基础返回范围内的点
data = dataCloud;
% 绘制散点
scatter3(data(:, 1), data(:, 2), data(:, 3), 12, [1 0 0], "filled", "o")
hold on
zlabel 'Z'
targetPoint = [40235.1142325237 -128.940013761462 738.5117255760920];
% 绘制目标点
scatter3(targetPoint(:, 1), targetPoint(:, 2), targetPoint(:, 3), 36, "magenta", "filled", "hexagram")
hold on mdl = KDTreeSearcher(data(:, 1 : 3), "Distance", 'euclidean');
tic
% knn search using KDtree model,直接给定数据集,搜索半径为50
id = rangesearch(mdl, targetPoint, 50, "Distance", "euclidean");
toc
result = data(id{1}, :);
% 绘制result 点
scatter3(result(:, 1), result(:, 2), result(:, 3), 72, "blue", "filled", "square")

【Matlab】基于KDtree的最近邻搜索和范围搜索的更多相关文章

  1. 基于KD-Tree的最近邻搜索

    目标:查询目标点附近的10个最近邻邻居. load fisheriris x = meas(:,:); figure(); g1=gscatter(x(:,),x(:,),species); %spe ...

  2. 基于R-Tree的最近邻查询

    转自基于R-Tree的最近邻查询 BAB(Branch.and.Band)算法是由Nick Roussopoulousnl等人于1995年提出的,是最早的基于R.树的静态最近邻查询算法.该算法使用MI ...

  3. 基于用户的最近邻协同过滤算法(MovieLens数据集)

      基于用户的最近邻算法(User-Based Neighbor Algorithms),是一种非概率性的协同过滤算法,也是推荐系统中最最古老,最著名的算法. 我们称那些兴趣相似的用户为邻居,如果用户 ...

  4. 基于 Kafka 的实时数仓在搜索的实践应用

    一.概述 Apache Kafka 发展至今,已经是一个很成熟的消息队列组件了,也是大数据生态圈中不可或缺的一员.Apache Kafka 社区非常的活跃,通过社区成员不断的贡献代码和迭代项目,使得 ...

  5. Elasticsearch深入搜索之全文搜索及JavaAPI使用

    一.基于词项与基于全文 所有查询会或多或少的执行相关度计算,但不是所有查询都有分析阶段. 和一些特殊的完全不会对文本进行操作的查询(如 bool 或 function_score )不同,文本查询可以 ...

  6. Elasticsearch核心技术(五):搜索API和搜索运行机制

    本文将从数据存储和搜索的角度简单分析Elasticsearch的搜索运行机制,主要涉及搜索API.搜索机制.存在问题和解决方案. 4.1 Search API Search API允许用户执行一个搜索 ...

  7. 高德地图-搜索服务-POI搜索

    高德地图-搜索服务-POI搜索 之前公司项目收货地址仿饿了么的收货地址,结果发现自己实现的关键字搜索和周边搜索,搜索到的poi列表跟饿了么的并不完全一样,后来考虑了下,应该是搜索的范围.类型之类的设置 ...

  8. 【高德地图API】从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索

    原文:[高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索 摘要:地图服务,大家能想到哪些?POI搜素,输入提示,地址解析,公 ...

  9. excel vba 实现跨表单(sheet) 搜索 - 显示搜索行记录搜索历史

    前两天,一个朋友问我,有没有办法在excel里实现一个表单里是原始数据,在另一个表单里显示搜索到的行,搜索关键词可用~分隔开,并把搜索历史记录下来? 我想了想,用vba实现肯定可以啊,但是我又在想,有 ...

  10. python 全栈开发,Day115(urlencode,批量操作,快速搜索,保留原搜索条件,自定义分页,拆分代码)

    今日内容前戏 静态字段和字段 先来看下面一段代码 class Foo: x = 1 # 类变量.静态字段.静态属性 def __init__(self): y = 6 # 实例变量.字段.对象属性 # ...

随机推荐

  1. 【C#】【平时作业】习题-3-数组

    1. 设计一个数组用于存放10个整数,然后计算这十个整数之和? private void btn1_Click(object sender, EventArgs e) { int temp = 0; ...

  2. Qt编写安防视频监控系统63-子模块7悬浮地图

    一.前言 悬浮地图子模块,使用的百度地图,支持在线和离线,用于显示对应设备的位置,支持鼠标直接拖动和缩放.本系统将各个地方需要的地图模块+浏览器模块都合并到一个地图内核模块,这样需要使用的时候只需要n ...

  3. [转]CSS、LESS和SASS(SCSS)的区别以及Ruby Sass、LibSass、Node Sass、Dart Sass之间的关系

    随着前端开发的不断发展,CSS也逐渐延伸出了很多新的语言,less和Sass就是其中两种,下面我们就一起来看看它们到底有何区别. SASS和LESS SASS(英文全称:Syntactically A ...

  4. 【OpenGL ES】GLSL基础语法

    1 前言 ​ 本文将介绍 GLSL 中数据类型.数组.结构体.宏.运算符.向量运算.矩阵运算.函数.流程控制.精度限定符.变量限定符(in.out.inout).函数参数限定符等内容,另外提供了一个 ...

  5. Royal Elementor Addons Pro v1.3.987 + v1.5.0 elementor网页设计元素组件插件下载

    Royal Elementor Addons Pro elementor网页设计元素组件插件破解版简介&下载 Royal Elementor Addons Pro Nulled Element ...

  6. 修改led-core.c 让led的delay_on和delay_off时间不会应为trigger配置改版而重置为1HZ

    先列一下leds trigger的设置流程 echo none > trigger 的流程 led_trigger_set() | led_stop_software_blink() echo ...

  7. document.querySelector 有多个类 的情况

    document.querySelector 有多个类 document.querySelector 方法用于返回文档中匹配指定 CSS 选择器的第一个元素.如果要查询具有多个类的元素,可以将它们作为 ...

  8. biancheng-Django(python)

    http://c.biancheng.net/django/ Django MTV和MVC的区别 1. MVC设计模式 我们先对 MVC 设计模式进行介绍,它是 Web 设计模式的经典之作,MTV 模 ...

  9. biancheng-数据结构

    目录http://c.biancheng.net/data_structure/ 1数据结构入门2线性表3栈和队列4字符串5数组和广义表6树存储结构7图存储结构8动态内存管理9查找表结构10排序算法1 ...

  10. 「NOIP2024」 树上查询

    update 2024/12/28 题目描述 给定一棵树,每次询问区间 \([l,r]\) 的 \[\max_{l \le l' \le r' \le r \land r' - l' + 1 \ge ...