Matlab怎么利用垂距法实现提取离散坐标数据特征点
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了Matlab怎么利用垂距法实现提取离散坐标数据特征点的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Matlab怎么利用垂距法实现提取离散坐标数据特征点文
千家信息网最后更新 2025年11月07日Matlab怎么利用垂距法实现提取离散坐标数据特征点
这篇文章主要介绍了Matlab怎么利用垂距法实现提取离散坐标数据特征点的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Matlab怎么利用垂距法实现提取离散坐标数据特征点文章都会有所收获,下面我们一起来看看吧。
垂距法是指根据中间顶点到其前、后两相邻顶点连线的距离的大小,来确定是否保留该顶点的一种 线要素顶点压缩 算法。当求得的距离大于给定的限差(阈值)时,保留该顶点,否则删除该顶点(如下图所示)。
一般使用所有点到直线距离的 中位数 作为阈值。同时,本人所编写的工具函数不仅可以处理二维数据点,三维甚至更高维度的数据点依旧可以处理。
1.工具函数
怕大家找不到工具函数,这里放在最前面啦:
function [newPntSet,vertPnt]=getFeaturePnt(pntSet)% @author:slandarer% newPntSet : 特征点% vertPnt : 原始曲线垂足[rows,cols]=size(pntSet);if rows<4||cols<2,error('数据点过少或维度异常');endinnerPntSet=pntSet(2:end-1,:); % 内部点adjPnt1V=innerPntSet-pntSet(1:end-2,:); % 当前点与前一点向量adjPnt2V=pntSet(3:end,:)-pntSet(1:end-2,:);% 当前点的两个相邻点向量adjPnt2V=adjPnt2V./vecnorm(adjPnt2V')'; % 归一化lVert=sum(adjPnt1V.*adjPnt2V,2); vertPnt=adjPnt2V.*lVert+pntSet(1:end-2,:); % 获取垂足vertL=vecnorm((innerPntSet-vertPnt)'); % 计算垂线距离vertL(isinf(vertL)|isnan(vertL))=0; % 修正/0的情况innerPntSet(vertL2.基础使用(二维)
这里随机生成一组二维数据(两列),取出特征点后并绘图:
% 随机构造数据X=linspace(0,25,10)';Y=randi([0,10],[10,1]);pntSet=[X,Y];% 获取特征点[nPntSet,vertPnt]=getFeaturePnt(pntSet);% 坐标区域修饰hold onax=gca;ax.DataAspectRatio=[1,1,1];% 绘制原始数据曲线plot(pntSet(:,1),pntSet(:,2),'Color',[0 0.4470 0.7410],'LineWidth',2,'Marker','*');% 绘制新数据曲线plot(nPntSet(:,1),nPntSet(:,2),'Color',[0.6350 0.0780 0.1840 .7],'LineWidth',2,'Marker','s');legend('original-curve','feature-curve')3.使用并修饰绘图(二维)
就把辅助线也画上并各种加属性呗,需要注意的是,垂足并不一定在相邻两点的连线上,有时候是在其延长线上,但因为怕麻烦这里延长线就没有画:
% 随机构造数据X=linspace(0,25,10)';Y=randi([0,10],[10,1]);pntSet=[X,Y];% 获取特征点[nPntSet,vertPnt]=getFeaturePnt(pntSet);% 坐标区域修饰hold onax=gca;ax.YLim=[0,10];ax.DataAspectRatio=[1,1,1];ax.Color=[1,1,1];ax.XColor=[1,1,1].*.3;ax.YColor=[1,1,1].*.3;ax.LineWidth=1.5;ax.FontName='cambria';% 绘制原始数据曲线l1=plot(pntSet(:,1),pntSet(:,2),'Color',[0 0.4470 0.7410],'LineWidth',2,'Marker','*');% 绘制辅助线及垂线innerPntSet=pntSet(2:end-1,:);l2=plot([innerPntSet(:,1),vertPnt(:,1)]',[innerPntSet(:,2),vertPnt(:,2)]','Color',[.3,.3,.3],'LineWidth',1.2,'LineStyle','-.');plot([pntSet(3:end,1),pntSet(1:end-2,1)]',[pntSet(3:end,2),pntSet(1:end-2,2)]','Color',[.3,.3,.3],'LineWidth',1.2,'LineStyle','-.')% 绘制新数据曲线l3=plot(nPntSet(:,1),nPntSet(:,2),'Color',[0.6350 0.0780 0.1840 .7],'LineWidth',2,'Marker','s');% 增添图例legend([l1,l2(1),l3],{'original-curve','auxiliary-line','feature-curve'});4.三维数据
也是几乎完全相同的使用方式,不过绘图用的plot3:
% 随机构造数据X=linspace(0,25,10)';Y=randi([0,10],[10,1]);Z=randi([0,10],[10,1]);pntSet=[X,Y,Z];% 获取特征点[nPntSet,vertPnt]=getFeaturePnt(pntSet);% 坐标区域修饰hold ongrid onax=gca;ax.YLim=[0,10];ax.ZLim=[0,10];ax.DataAspectRatio=[1,1,1];ax.Color=[1,1,1];ax.XColor=[1,1,1].*.3;ax.YColor=[1,1,1].*.3;ax.ZColor=[1,1,1].*.3;ax.LineWidth=1.5;ax.FontName='cambria';% 绘制原始数据曲线l1=plot3(pntSet(:,1),pntSet(:,2),pntSet(:,3),'Color',[0 0.4470 0.7410],'LineWidth',2,'Marker','*');% 绘制辅助线innerPntSet=pntSet(2:end-1,:);l2=plot3([innerPntSet(:,1),vertPnt(:,1)]',[innerPntSet(:,2),vertPnt(:,2)]',... [innerPntSet(:,3),vertPnt(:,3)]','Color',[.3,.3,.3],'LineWidth',1.2,'LineStyle','-.');plot3([pntSet(3:end,1),pntSet(1:end-2,1)]',[pntSet(3:end,2),pntSet(1:end-2,2)]',... [pntSet(3:end,3),pntSet(1:end-2,3)]','Color',[.3,.3,.3],'LineWidth',1.2,'LineStyle','-.')% 绘制新数据曲线l3=plot3(nPntSet(:,1),nPntSet(:,2),nPntSet(:,3),'Color',[0.6350 0.0780 0.1840 .7],'LineWidth',2,'Marker','s');% 增添图例legend([l1,l2(1),l3],{'original-curve','auxiliary-line','feature-curve'});view(3)关于"Matlab怎么利用垂距法实现提取离散坐标数据特征点"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Matlab怎么利用垂距法实现提取离散坐标数据特征点"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
数据
特征
坐标
曲线
顶点
离散
原始
二维
函数
区域
工具
知识
绘图
辅助
内容
前点
向量
图例
垂线
延长线
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
学生管理数据库创建课程表
聚合数据库技术
服务器硬盘认不到
2021年人口数据库
远程桌面数据库不支持
省互联网基本基数数据库
《网络安全法》亮点提到
电力网络安全通知怎么写
网络化带来网络安全
什么是网络安全程序
嵌入式要学数据库么
玩游戏服务器老断开
软件开发质量管理工具
网络安全教育周讲话稿
徐州小型软件开发技术指导
国开数据库运维形考机考4046
北京捷瑞丰网络技术
数据库偶发查不到记录
安卓做的小软件开发
sql数据库表怎么复制
新天龙八部服务器爆满
全国大学生网络安全竞答
数据库名字和密码是什么样的
数据库 控制技术要求
时钟管理服务器品牌
网络安全年会
南昌嵌入式软件开发
文件上传是上传到服务器本地吗
黄浦区云服务器
网络安全与新枫桥经验分析