在一个地区找到禁区

17日视图(30天)
阿明Mashhadi
阿明Mashhadi 2019年11月10日
评论道: 彰Agata 2019年11月13日
你好,
第一,谢谢你的帮助。
作为我论文的一部分,我需要找到所有封闭的区域的一组数据。例如你在照片中看到的只有一个封闭的区域。(数据已附加)
我需要找到禁区。我尝试使用多种价元素命令,但它将连接第一个和最后一个点,所以将创建几个导致错误的地区和错误的答案。(这里说有三个封闭区域)
你知道如何处理它?

答案(1)

彰Agata
彰Agata 2019年11月11日
通过使用 polyshape , 简化 地区 功能,您可以获得polyshape对象为每一个封闭的区域。下面是一个例子:
负载(“Data.mat”);
pgonAll = polyshape(数据(:1),数据(:,2),“简化”、假);
pgonAll =简化(pgonAll);
pgonEach =区域(pgonAll);
情节(数据(:1),(2):,)
持有
情节(pgonEach (2))
传奇({“数据”,“pgonEach (2)”},“字形大小”,12)
pgon.png
2的评论
彰Agata
彰Agata 2019年11月13日
嗨Armin-san,
谢谢你的回应。
>使用多边形,然后关闭“简化”,使用一遍“简化”命令(为什么?)。
这是因为,在你的情况下, polyshape 函数返回警告消息时,将“简化”。所以我分开每一个步骤。(以防,请注意这个警告消息只是“警告”。输出成为相同)
>我的问题是,如何选择封闭的地区。
好的。
使用顶点的事实不跳突然封闭面积(s),你可以提取这些polyshape(年代)。下面是一个例子。我希望这将帮助你!
负载(“Data.mat”);
pgonAll = polyshape(数据(:1),数据(:,2),“简化”、假);
pgonAll =简化(pgonAll);
pgonEach =区域(pgonAll);
%找到polyshape (s)的相邻顶点不“跳”
% (e。g距离> 1)
idx = false(大小(pgonEach));
kk = 1:元素个数(pgonEach)
v = pgonEach .Vertices(乐);
d = vecnorm (diff (v)、2、2);
如果所有(d < 1)
idx (kk) = true;
结束
结束
%提取目标polyshape (s)
pgonEach = pgonEach (idx);
%可视化
情节(数据(:1),(2):,)
持有
如果~ isempty (pgonEach)
kk = 1:元素个数(pgonEach)
情节(pgonEach (kk))
结束
结束

登录置评。

类别

找到更多的在基本的多边形帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!