2017-04-01 45 views
2

我想用python查找給定一組數據點(x,y,z)的卷。這些數據點是從實驗中收集的樣品(所以繪製的表面可能非常不規則)。我已經制定了如何創建3D圖,但不知道如何使用python計算音量。查找由不規則數據點定義的卷 - python

X, Y = np.meshgrid(x, y) 
Z = griddata(xpts, ypts, zpts, x, y) 
fig = plt.figure() 
ax = fig.gca(projection='3d')    
surf = ax.plot_surface(X, Y, Z,   
         rstride=5,   
         cstride=5,   
         cmap=cm.jet,   
         linewidth=0,   
         antialiased=True, 
         vmin=np.nanmin(Z), 
         vmax = np.nanmax(Z)) 

這裏有一個類似的問題找到下使用python,Volume under "plane" defined by data points - python不規則的表面面積。這可以適應找到卷? 任何幫助表示讚賞。 謝謝。

+0

首先你必須定義你正在試圖找到音量的身體,其餘的是相對簡單的。 –

+0

例如,如果我在2D中給出'0,0','2,0','1,1','1,2'的點,那麼封閉形狀將會是什麼? –

+0

點雲的凸包是明確定義的,幾乎任何東西都很難,「主觀」和/或生病定義 – f5r5e5d

回答

2

我想偷懶,用凸形輪廓就像一個黑盒子:

import scipy.spatial as ss 
import numpy as np 
npoints = 6 
ndimensions = 3 
points = np.random.rand(npoints, ndimensions) 
hull = ss.ConvexHull(points) 
print('volume inside points is: ',hull.volume) 

雖然這可能不是CPU的優化,因爲凸形輪廓計算了一堆東西。

希望這會有所幫助。

+0

完美。謝謝你,Stéphane。新的Python,所以這是一個真正的幫助。找到關於計算時間的鏈接。 [用qhull凸包的體積](http://stackoverflow.com/questions/24733185/volume-of-convex-hull-with-qhull-from-scipy) – user7800458