基于KDtree的电路故障检测算法的MATLAB仿真

news2024/10/5 17:23:01

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

        k-d树是每个节点都为k维点的二叉树。所有非叶子节点可以视作用一个超平面把空间分割成两个半空间。节点左边的子树代表在超平面左边的点,节点右边的子树代表在超平面右边的点。选择超平面的方法如下:每个节点都与k维中垂直于超平面的那一维有关。因此,如果选择按照x轴划分,所有x值小于指定值的节点都会出现在左子树,所有x值大于指定值的节点都会出现在右子树。这样,超平面可以用该x值来确定,其法线为x轴的单位向量。

1.对KDtree的理解
  首先要知道KDtree的用处,KDtree是用来进行多维数点的,一般这些点都是在在而二维及二维以上,因为一维上的问题,我们基本都可以运用线段树来解决。我对KDtree的理解就是一个自带剪枝的暴力,并且这个剪枝因为我们对这些多维上的点的较优秀的排列而显得十分有用。

2.前置知识
  在学习KDtree之前要先知道并会运用西面三个知识点:

​  1) 首先,要会建二叉搜索树,因为整个KDtree就是一颗二叉搜索树。

  2) 还需要知道什么事估价函数,因为剪枝的时候要运用到估价函数。

​  3) 对空间的想象能力,因为KDtree是处理图形上的问题,所以还需要有一定的空间想象能力。

3.KDTree的讲解
  因为KDtree是一种优美的暴力,并且我们要在上面剪枝,所以我们自然想让每一次剪枝,剪下去尽可能大的部分,所以我们能想到每一次将区间等大的分割,既然要的等大的分割,又要是二叉搜索树,我们就要让中间值作为当前节点,所有比它小的都放在它的左面,比它大的都放在它的右面。

2.仿真效果预览

matlab2022a仿真如下:

3.MATLAB核心程序

demo_case = [1,2,3,4];
 
plot_stuff=1;   % 1 if you want to plot the data
% change to 0 if you donot want to plot anything.
 
if (plot_stuff) close all; end
clc
 
rand('seed',1)
dimen=2;
X=rand(200,dimen);
point=0.2*ones(1,dimen);
 
disp('##### Build Tree #####');
 
tree = kd_buildtree(X,plot_stuff);
 
for count=1:max(size(demo_case))
    
    switch demo_case(count)
 
        case 1
 
            if (plot_stuff); hold on ; end
            if (plot_stuff); plot(point(1),point(2),'g*','MarkerSize',10); end
            disp('##### Closest Point Fast #####');
            [index_vals,vec_vals,node_number] = kd_closestpointfast(tree,point)
            if (plot_stuff); plot(X(index_vals,1),X(index_vals,2),'y*','MarkerSize',10); end
 
        case 2
 
            if (plot_stuff); hold on ; end
            if (plot_stuff); plot(point(1),point(2),'go'); end
            disp('##### Closest Point Good #####');
            [index_vals,vec_vals,node_number] = kd_closestpointgood(tree,point)
            if (plot_stuff); plot(X(index_vals,1),X(index_vals,2),'m*','MarkerSize',10); end
 
        case 3
            point=0.6*ones(1,dimen);
            if (plot_stuff); hold on ; end
            if (plot_stuff); plot(point(1),point(2),'g*','MarkerSize',10); end
            disp('##### N Closest Points #####');
            num_of_points=10;
            [index_vals,dist_vals,vec_vals]  = kd_knn(tree,point,num_of_points,plot_stuff)
            if (plot_stuff);
                plot(X(index_vals,1),X(index_vals,2),'g*');
                dist=sqrt(sum((point-X(index_vals(end),1:2)).^2));
                plot(point(1)+dist*cos(0:0.1:2*pi),point(2)+dist*sin(0:0.1:2*pi),'g-','LineWidth',2)
            end
 
 
        case 4
 
            disp('##### Range Query #####');
            point=0.35*ones(1,dimen);
            range=[-0.1*ones(1,dimen); 0.1*ones(1,dimen)];
            [index_vals,dist_vals,vector_vals] = kd_rangequery(tree,point,range)
 
            %%% plotting stuff
            if (plot_stuff);
                a=point+range(1,:);
                b=point+range(2,:);
                c=[a(1) a(1) b(1) b(1);a(1) b(1) b(1) a(1)];
                d=[a(2) b(2) b(2) a(2);b(2) b(2) a(2) a(2)];
                plot(point(1),point(2),'k*','MarkerSize',10)
                line(c,d, 'color', 'k','LineWidth',2);
                plot(X(index_vals,1),X(index_vals,2),'k*')
            end
 
    end
 
end
 
if (plot_stuff);
    set(gca,'box','on');
    set(gca,'XTickLabel',[]);
    set(gca,'YTickLabel',[]);    
end 
A93

4.完整MATLAB

V

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业数据安全如何落实?私有化知识文档管理系统效率部署

编者按:本文分析了数据安全性企业的重要性,特别是高保密企业单位,介绍了天翎知识文档管理群晖NA是如何保护企业数据安全的。 关键词:私有化部署,安全技术,数据备份,病毒防护,全网隔…

【zeriotier】win10安装zeriotier的辛酸泪

目录概述问题1:waiting for zeriotier system service问题2:Zerotier One 出现Node ID “unknown”问题3:一切正常,但是连不上服务器最终解决方法附录概述 背景:实验室的服务器是使用zeriotier组网的,因此…

字符串-模板编译

模板编译 编译就是一种格式转换成另一种格式的过程,这里主要讨论一下模板编译。模板字符串对比普通的字符串有很多的不同,模板字符串可以嵌套,并且模板字符串可以在内部使用${xxx}进行表达式运算以及函数调用,这些其实都是模板编…

DPDK Ring

无锁环ring是DPDK提供的一种较为基础的数据结构,其支持多生产者和多消费者同时访问。 经过我的经验,无锁结构的实现主要依靠两方面: 最终的数据交换一定要是原子级的操作,最常用到的自然就是比较后交换(Compare And S…

Java项目:SSM个人博客网站管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目包含管理员与游客两种角色; 管理员角色包含以下功能: 发表文章,查看文章,类别管理,添加类别,个人信息管理,评论…

DeepSort目标跟踪算法

DeepSort目标跟踪算法是在Sort算法基础上改进的。 首先介绍一下Sort算法 Sort算法的核心便是卡尔曼滤波与匈牙利匹配算法 卡尔曼滤波是一种通过运动特征来预测目标运动轨迹的算法 其核心为五个公式,包含两个过程: 其分为先验估计(预测&…

[附源码]计算机毕业设计人事管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

UE4中抛体物理模拟UProjectileMovementComponent

UE4中抛体物理模拟UProjectileMovementComponent1.简述2.使用方法3.绘制抛物曲线4.绘制抛物曲线1.简述 背景:实现抛体运动,反弹效果,抛物曲线等功能 通用实现可以使用spline绘制,物体按照下图接口可以根据时间更新位置 USplineC…

CN_MAC介质访问控制子层@CSMA协议

文章目录常用方法静态方法信道划分MAC特点动态方法随机访问MACCSMA协议CSMA/CD多点接入(或多点访问):载波监听Note:🎈碰撞检测碰撞:碰撞冲突过程传播时延对载波侦听的影响🎈争用期发现碰撞的最迟情况电磁波的速率是有限最短帧长🎈小结&#x…

CAD重复圆绘制机械图形

这次CAD必练图形第四个,这个图形主要用到了CAD圆、直线、修剪、旋转等多个命令,看着不简单,等绘制出来后就觉得还是挺简单的。 目标图形 操作步骤 1.使用CAD直线命令绘制一条水平的直线和四条垂直的直线,四条垂直的直线之间的距…

【网络层】DHCP协议(应用层)、ICMP、IPv6详解

注:最后有面试挑战,看看自己掌握了吗 文章目录DHCP------DHCP服务器来动态分配IP--------应用层协议----允许地址重用ICMP字段----差错报文、询问报文差错报文-----终点不可达无法交付--------源点抑制、拥塞丢数据(现在废弃)----…

JAVA小区物业管理系统(源代码+论文)

毕业设计(论文) [摘要] 物业管理系统是紧随当今时代发展的需要,目的在于实现不同的人员对物业系统的不同的需要,有利于社会的稳定和顺利发展。 关键词:小程序Applet;应用程序Application;数据库;数据库实现&#xf…

12.5 - 每日一题 - 408

每日一句:没有醒不来的早晨,弄不懂的题目,熬不过的迷茫,只有你不敢追的梦。 数据结构 1 在最后一趟排序开始之前,所有记录有可能都不在其最终位置上的是______。 A. 直接插入排序B. 冒泡排序C. 堆排序D. 快速排…

底层逻辑-理解Go语言的本质

1.Java VS Go语言 Java,从源代码到编译成可运行的代码 上图已经展示了这个过程:从Java的源代码编译成jar包或war包(字节码),最终运行在JVM中。 我们把Java源代码编译后的jar包或war包看成是工程师生产出来的产品,操作系统是一个平台,JVM就是…

【RCNN系列】RCNN论文总结

目标检测论文总结 【RCNN系列】 RCNN RCNN目标检测论文总结前言一、Pipeline二、模型设计1.warp2.SVM3.阈值设定4.box回归三、思考四、缺点前言 一些经典论文的总结。 一、Pipeline 首先传入Input image,利用Selective Search(比较古老)算法…

【计算机网络】数据链路层:拓展的以太网

在物理层拓展以太网: 使用光纤拓展:主机使用光纤和一对光纤调制解调器连接到集线器。 使用集线器拓展:使用集线器连成更大的以太网 集线器优点: 使原来不同碰撞域的计算机能够跨碰撞域通信,扩大了以太网覆盖的地理范…

GDB使用技巧和相关插件

GDB使用-小技巧 参考:《100个gdb小技巧》 链接中的文档有许多关于GDB的使用小技巧; $info functions - 列出函数的名称 $s/step - 步入,进入带有调试信息的函数 $n/next - 下一个要执行的程序代码 $call/print - 直接调用函数执行 $i/info …

jvm简介

.什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。JVM屏蔽了与操作系统平台相…

Postman如何做接口测试,那些不得不知道的技巧

目录:导读 前言 Postman如何做接口测试1:如何导入 swagger 接口文档 Postman如何做接口测试2:如何切换测试环境 Postman如何做接口测试3:什么?postman 还可以做压力测试? Postman如何做接口测试4&…

电源控制测试老化系统-国产电源测试仪器-电源模块测试系统NSAT-8000

*测试仪器:可编程直流电源、可编程直流电子负载、数字示波器、功率计 *测试产品:电源模块。纳米软件电源ATE自动测试系统适用于大功率工业电源、AC/DC类DC电源供应器、适配器、充电器、LED电源等开关电源之综合性能测试。 *被测项目:有效值电…