早教吧 育儿知识 作业答案 考试题库 百科 知识分享

答对追加80分~道格拉斯-普克与matlab所谓道格拉斯,即对每一条曲线的首末两点虚连一条直线,求其间所有点到直线的距离,并找到最大距离值dmax,用dmax与限差D相比:若dmax<D,这条曲线上的中间

题目详情
答对追加80分~道格拉斯-普克与matlab
所谓道格拉斯,即对每一条曲线的首末两点虚连一条直线,求其间所有点到直线的距离,并找到最大距离值dmax,用dmax与限差D相比:若dmax<D,这条曲线上的中间点全部舍去;若dmax≥D,保留dmax对应的坐标点,并以该点为界,把曲线分为两部分,对这两部分重复使用这种方法.目的是为了压缩数据.
请问怎么编写matlab程序实现?我的数据是等高线上的点~十分急.今天之内要~
▼优质解答
答案和解析
function DouglasPeucker(PointList[], epsilon)
//Find the point with the maximum distance
dmax = 0
index = 0
for i = 2 to (length(PointList) - 1)
d = PerpendicularDistance(PointList[i], Line(PointList[1], PointList[end]))
if d > dmax
index = i
dmax = d
end
end

//If max distance is greater than epsilon, recursively simplify
if dmax >= epsilon
//Recursive call
recResults1[] = DouglasPeucker(PointList[1...index], epsilon)
recResults2[] = DouglasPeucker(PointList[index...end], epsilon)

// Build the result list
ResultList[] = {recResults1[1...end-1] recResults2[1...end]}
else
ResultList[] = {PointList[1], PointList[end]}
end

//Return the result
return ResultList[]
end
看了 答对追加80分~道格拉斯-普...的网友还看了以下: