MATLAB 帮助中心
简化 polyshape 边界
polyshape
polyout = simplify(polyin)
polyout = simplify(polyin,'KeepCollinearPoints',TF)
polyout = simplify(polyin) 返回一个 polyshape 对象,此对象由删除所有重复顶点之后的多边形 polyin 的边界组成,而且所有边界交集和不正确嵌套问题均已解决。
polyin
示例
polyout = simplify(polyin,'KeepCollinearPoints',TF) 指定是保留还是删除 polyout 中的共线点。
TF
polyout
全部折叠
创建并绘制包含边界交集的多边形。
P = [0 0; 1 1; 1 0; 0.5 0.5; 0 1; 0 0]; polyin = polyshape(P,'Simplify',false)
polyin = polyshape with properties: Vertices: [5×2 double] NumRegions: 1 NumHoles: 0
plot(polyin)
使用 simplify 函数删除交集,生成一个明确定义的多边形。简化多边形会保持边界的形状,但会将多边形分成两个不同的区域。
simplify
polyout = polyshape with properties: Vertices: [7×2 double] NumRegions: 2 NumHoles: 0
输入 polyshape,指定为标量、向量、矩阵或多维数组。
数据类型: polyshape
false
true
共线顶点指示符,指定为 false 或 true:
false - 删除共线点,使输出 polyshape 包含定义边界所需的最少顶点。
true - 保留所有共线点作为顶点。
如果未指定 'KeepCollinearPoints' 参数,则其值将自动设置为在创建输入 polyshape 时使用的值。
'KeepCollinearPoints'
数据类型: logical
logical
全部展开
用法说明和限制:
必须启用动态内存分配才能进行代码生成。
名称-值对组必须为编译时常量。
backgroundPool
ThreadPool
simplify 函数在对具有许多边界的 polyshape 对象执行运算时表现出了更好的性能。例如,以下代码会简化一个具有 11,100 个顶点的 polyshape 对象。该代码比上一版本大约快 23 倍。
function t = timingTest n = 300; x = (1:n)'*[sind(0:10:360),NaN]; y = (1:n)'*[cosd(0:10:360),NaN]; p = polyshape(x(:),y(:),Simplify=false); f = @() simplify(p); t = timeit(f); end
大致的执行时间是:
R2024a:0.28 秒
R2024b:0.012 秒
此代码是在运行 Windows® 11 的 AMD EPYC™ 74F3 24 核处理器 @ 3.19 GHz 测试系统上通过调用 timingTest 函数计时的。
timingTest
issimplified | polyshape
issimplified
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处