作者nbalife (来福)
看板MATLAB
标题[问题] concave polygon
时间Sat Jun 8 16:00:32 2013
我在二维空间中有许多资料散布点 x和y 以及速度(u,v)
我想要用这些取样点对整个空间做内插
我是用三角型的内插
triscatteredinterp (griddata的结果好像是一样的?)
matlab都会用convhull的概念 对凸多边形进行内插
但其实我的取样点应该是concave polygon
目前我的做法是这样
先不管上述情况 先内插出整个空间的u和v
然後把所有的delaunay检查一遍把不合理的三角型去掉
接着把坐标不在所有三角形中的点的 u v 令为nan
可是这样一来程式执行的速度太慢了 已经跑了两个小时还没完....
感觉很没效率 想问问看有没有更好的想法
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.230.188
1F:推 sunev:用for就没救了 06/08 16:12
2F:→ nbalife:我的确是用for.... 06/08 16:31
3F:推 sunev:我看到 "把所有的xxxx检查一遍" 就知道了...:P 06/08 17:12
4F:→ nbalife:因为我无法建立concave polygon的边界 06/08 17:17
5F:→ nbalife:所以只能一个一个三角形看 06/08 17:18
6F:推 sunev:所以你想做这件事? 06/08 17:36
8F:→ nbalife:是有点像 但是他的形状比较简单 顶点数很好决定 06/08 17:39
9F:→ nbalife:我的点是散布的 我目前是把任一边长太大的三角形删去 06/08 17:40
10F:→ YoursEver:constrained Delaunay triangulation? 06/09 06:08
11F:→ YoursEver:如果是CDT的话,你该作的事情是先把boundary定义好, 06/09 06:08
12F:→ YoursEver:接下来再去run CDT. 06/09 06:08
13F:→ YoursEver:如果是想先作delaunay再去删除不合理的三角型,那麽, 06/09 06:09
14F:→ YoursEver:"重新补三角型"会比你现在作"检查"这件事更要命. 06/09 06:10
15F:→ YoursEver:再来,如果是想靠simplex来作interpolation,这部分应该是 06/09 06:12
16F:→ YoursEver:和三角型是否过於狭长无关. 06/09 06:12