【步进的节点】LBG演算法流程与演…

2023-10-10 04:59

本文主要是介绍【步进的节点】LBG演算法流程与演…,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

 

简介

LBG演算法是一种在多传感器节点网络之中常用的一种演算法,LBG算法通过训练矢量集和一定的 迭代算法来逼近最优的分组数据,在这里,使用C#来实现对该演算法步骤的演示,并绘图表示。

 

本程序的流程图如下:

 

 

【步进的节点】LBG演算法流程与演示程序

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

在C#语言VisualStudio环境下的实现

VisualStudio是微软推出的集成编程开发环境,对多种语言具有较高的支持度,且具备界面设计功能,环境稳定,适合进行各类型的编程,这里使用2015版本。

C#是一种高级编程语言,由微软推出并提供长久的支持,其拥有优秀的内存管理,是目前编程上常用的高级语言之一。

 

程序界面

程序共有两个窗口,主要窗口负责控制整体流程,副窗口对图片进行显示并提供简单的基于鼠标api的测距功能(像素点)

 【步进的节点】LBG演算法流程与演示程序

主窗口介绍

主窗口为WPF窗口,具有结构清晰,易于使用的特点

《1》V1.72 为当前的版本号,每次较大修改将提升十分位版本号,细节纠正提高百分位版本号

《2》初始节点数量为当前设定开始下第0次随机产生的实节点数目,

《3》分组数目为将节点按照中心节点进行分组的数量

《4》失真值为当前失真度减去上一次失真度后除以当前失真度所得到的数值,与临界失真数值进行比较,小于临界数值时软件判断已达到收敛度从而停止继续计算。

《5》长度宽度代表随机节点XY坐标数的产生范畴,也是绘图的凭据之一

《6》只显示最终结果勾选后,点击下一步将不再按步生成而是直接生成结果

《7》数据重置按钮会重置所有的数据,使得软件可以重新进行演示

《8》每次点击下一步将按步进行数据的演算与生成

 

 

 

副窗口介绍

副窗口显示绘制的节点图形,节点按照分组会被以不同的颜色进行标出。

其中实心圆形点为实节点,空心圆点为在演算过程中生成的虚节点,带有外圈同心圆的为最终演算得到的中心虚节点。

 

 【步进的节点】LBG演算法流程与演示程序

【步进的节点】LBG演算法流程与演示程序

 

 

窗口下方的Weight会显示鼠标在点击后拖动的距离。

 

 

程序的主要用途与功能

该程序对LBG演算法进行直接演示,并能够实时的显示演算结果,按步骤显示数据,并且可以将数据以图形方式进行显示,图像保存在软件目录下。

 

功能有以下四点:

1.具备保存结果的能力

2.备测距验证的功能

3.具备图形化显示的功能

4.完整的操作界面

5.随机节点生成

 

 

 

 

 【步进的节点】LBG演算法流程与演示程序

 

 

程序会将过程中的语句输出到窗口的textbox中,提供给用户进行参考

 

文字可以被复制

 

程序流程与技术说明

1.生成节点

在该程序中,会通过随机数方式产生节点,而随机数实际上是一种伪随机数,依据系统执行时间进行生成,在LBG DEMO程序中,利用Thread.sleep函数让线程在随机产生一个随机数后短暂休眠,保证了随机数产生的不同。随机数的坐标生成还与限定范围相关,保证随机数不超出区域大小。

2.选择节点

                   在初始步骤0下,因为暂未有节点提供分组数据,所以由节点随机选择,这里用一个随机数生成函数来执行,用以产生小于生成节点之总数的随机数,按照分组数目随机选择,并且通过循环方式保证分组中心节点不相同。如果相同,则会重新产生随机数。

3.分组

分组通过计算节点到中心节点距离来进行,通过轮回计算单个节点和主节点之间距离,并进行比对,就可以记录最小距离,通过该最小距离就能对节点的归属进行分类。

 

4.计算新的中心节点

通过对单个组内节点的坐标进行重新平均,可以得到下一次的该组的中心节点,需要注意的是,只有在第0次分组时候会加入主要节点作为参照,其他时候虚节点并不作为在计算新的虚节点所参照的节点数之一。

 

5.计算并比对临界值

通过计算收敛程度,我们可以得到当前计算与上一次计算相差,并通过百分比与临界值进行比较,当小于临界值的时候将结束本次计算,并绘制图形(实际上程序的图形是每轮都绘制的),如果未达到初始设定的临界值,则返回到第2步继续执行计算。

 

 

 

 

 

Github地址:

https://github.com/arenascats/LBG_Algorithm_Demo

 

 

这篇关于【步进的节点】LBG演算法流程与演…的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/178139

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

火语言RPA流程组件介绍--浏览网页

🚩【组件功能】:浏览器打开指定网址或本地html文件 配置预览 配置说明 网址URL 支持T或# 默认FLOW输入项 输入需要打开的网址URL 超时时间 支持T或# 打开网页超时时间 执行后后等待时间(ms) 支持T或# 当前组件执行完成后继续等待的时间 UserAgent 支持T或# User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器

JS和jQuery获取节点的兄弟,父级,子级元素

原文转自http://blog.csdn.net/duanshuyong/article/details/7562423 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素。 <div id="test"><div></div><div></div

UMI复现代码运行逻辑全流程(一)——eval_real.py(尚在更新)

一、文件夹功能解析 全文件夹如下 其中,核心文件作用为: diffusion_policy:扩散策略核心文件夹,包含了众多模型及基础库 example:标定及配置文件 scripts/scripts_real:测试脚本文件,区别在于前者倾向于单体运行,后者为整体运行 scripts_slam_pipeline:orb_slam3运行全部文件 umi:核心交互文件夹,作用在于构建真

驱动(RK3588S)第七课时:单节点设备树

目录 需求一、设备树的概念1、设备树的后缀名:2、设备树的语法格式3、设备树的属性(重要)4、设备树格式举例 二、设备树所用函数1、如何在内核层种获取设备树节点:2、从设备树上获取 gpio 口的属性3、获取节点上的属性只针对于字符串属性的4、函数读取 np 结点中的 propname 属性的值,并将读取到的 u32 类型的值保存在 out_value 指向的内存中,函数的返回值表示读取到的