PART.0 算法描述
-
在曲线首尾两点间虚连一条直线,求出其余各点到该直线的距离。
-
选其最大者与阈值相比较,若大于阈值,则离该直线距离最大的点保留,否则将直线两端点间各点全部舍去。
-
依据所保留的点,将已知曲线分成两部分处理,重复第1、2步操作,迭代操作,即仍选距离最大者与阈值比较,依次取舍,直到无点可舍去,最后得到满足给定精度限差的曲线点坐标。
LongTime Later
为了代码简单易理解,这里使用了二分迭代,含详细注释代码如下
function nPntSet=dp(pntSet,TH)
% @author : slandarer
% pntSet : 二维数据点
% TH : 距离阈值
% 向量运算:计算所有点到首位两点连线距离
vertV=[pntSet(end,2)-pntSet(1,2),-pntSet(end,1)+pntSet(1,1)];
baseL=abs(sum((pntSet-pntSet(1,:)).*vertV./norm(vertV),2));
if max(baseL)
关注
打赏