[問題] 二維資料點散布內插 (concave polygon)

看板MATLAB作者 (來福)時間12年前 (2013/06/08 16:00), 編輯推噓3(3013)
留言16則, 3人參與, 最新討論串1/1
我在二維空間中有許多資料散布點 x和y 以及速度(u,v) 我想要用這些取樣點對整個空間做內插 我是用三角型的內插 triscatteredinterp (griddata的結果好像是一樣的?) matlab都會用convhull的概念 對凸多邊形進行內插 但其實我的取樣點應該是concave polygon 目前我的做法是這樣 先不管上述情況 先內插出整個空間的u和v 然後把所有的delaunay檢查一遍把不合理的三角型去掉 接著把坐標不在所有三角形中的點的 u v 令為nan 可是這樣一來程式執行的速度太慢了 已經跑了兩個小時還沒完.... 感覺很沒效率 想問問看有沒有更好的想法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.230.188

06/08 16:12, , 1F
用for就沒救了
06/08 16:12, 1F

06/08 16:31, , 2F
我的確是用for....
06/08 16:31, 2F

06/08 17:12, , 3F
我看到 "把所有的xxxx檢查一遍" 就知道了...:P
06/08 17:12, 3F

06/08 17:17, , 4F
因為我無法建立concave polygon的邊界
06/08 17:17, 4F

06/08 17:18, , 5F
所以只能一個一個三角形看
06/08 17:18, 5F

06/08 17:36, , 6F
所以你想做這件事?
06/08 17:36, 6F

06/08 17:37, , 7F
06/08 17:37, 7F

06/08 17:39, , 8F
是有點像 但是他的形狀比較簡單 頂點數很好決定
06/08 17:39, 8F

06/08 17:40, , 9F
我的點是散佈的 我目前是把任一邊長太大的三角形刪去
06/08 17:40, 9F

06/09 06:08, , 10F
constrained Delaunay triangulation?
06/09 06:08, 10F

06/09 06:08, , 11F
如果是CDT的話,你該作的事情是先把boundary定義好,
06/09 06:08, 11F

06/09 06:08, , 12F
接下來再去run CDT.
06/09 06:08, 12F

06/09 06:09, , 13F
如果是想先作delaunay再去刪除不合理的三角型,那麼,
06/09 06:09, 13F

06/09 06:10, , 14F
"重新補三角型"會比你現在作"檢查"這件事更要命.
06/09 06:10, 14F

06/09 06:12, , 15F
再來,如果是想靠simplex來作interpolation,這部分應該是
06/09 06:12, 15F

06/09 06:12, , 16F
和三角型是否過於狹長無關.
06/09 06:12, 16F
文章代碼(AID): #1HikIYMV (MATLAB)
文章代碼(AID): #1HikIYMV (MATLAB)