Matlab怎么利用垂距法实现提取离散坐标数据特征点
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了Matlab怎么利用垂距法实现提取离散坐标数据特征点的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Matlab怎么利用垂距法实现提取离散坐标数据特征点文
千家信息网最后更新 2026年10月31日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安全错误
数据库的锁怎样保障安全
蓝思科技飞鸽互联网
互联网科技战争
互联网科技的
科技制造互联网公司
嘟嘟瓜互联网科技
安徽鑫晟辉互联网科技
华中科技大学互联网
上海喔噻互联网科技
互联网科技上市公司
易通互联网络科技有限公司
互联网科技网站
互联网科技美容
北京大学互联网科技怎么样
哈尔滨屹滨互联网科技有限公司
畅思互联网科技
爱医互联网络科技
互联网科技圈年度人物
广州千川互联网科技有限公司
从那以后互联网科技有限公司
平安好医生打造互联网科技医疗
无锡溥仪互联网科技有限公司
央行互联网金融科技公司
阿里互联网科技公司
电子科技大学互联网创业大赛
青海科技产业互联网发展
健康食品互联网创新科技园项目
每天都有哪些好的互联网科技
中天科技中国工业互联网
互联网科技手抄报图片
互联网科技自媒体灵感