2017-11-20 4 views
0

Ich möchte, dass X, Y-Koordinaten aller lokalen Maxima einer 3D-Oberfläche B-Spline mit Bisplrep gemacht.Finden Sie die Maxima Punkte der 3D Oberfläche B-Splice Python scipy bisplrep. Kann Sproot verwendet werden?

spoder, und sproot werden mit splrep verwendet, um für einzelne variate B-Spline zu finden. Wie werden bisplrep Maxima und Minima gefunden?

Mein Code ist unten angegeben.

tck = interpolate.bisplrep(X, Y, sensor_counts, s=0) 
xnew, ynew = np.mgrid[ min(grid_x):max(grid_x):100j, min(grid_y):max(grid_y):100j] 
znew = interpolate.bisplev(xnew[:,0], ynew[0,:], tck, dx=0, dy=1) 
print xnew 
print ynew 
fig = plt.figure() 
ax = fig.gca(projection='3d') 
print tck 
surf = ax.plot_surface(xnew, ynew, znew, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=0, antialiased=False) 
cset = ax.contour(xnew, ynew, znew, zdir='z', offset=5100, cmap=cm.coolwarm) 

Antwort

0

Wir können scipy.optimize Bibliothek von Python verwenden.

Ich habe scipy.optimize.fmin_tnc auf die folgende Weise verwendet.

def neg_bspline(x): 
global tck 
f = -interpolate.bisplev(x[0], x[1], tck, dx=0, dy=0) 
g = [-interpolate.bisplev(x[0], x[1], tck, dx=1, dy=0), -interpolate.bisplev(x[0], x[1], tck, dx=0, dy=1)] 
return f, g 

for i in sensor_array: 
    x0 = i.get_coordinate() 
    print x0 
    bounds = [(0,200) , (0,200)] 
    x0 = fmin_tnc(neg_bspline, x0=x0, bounds=bounds) 
    print x0 
    solutions.append(x0[0]) 
result_plot(solutions) 
Verwandte Themen