aşağıdaki (wikipedia çıkarılan görüntünün) gibi bir şey yapmaya çalışıyorumSplaynlar
#!/usr/bin/env python
from scipy import interpolate
import numpy as np
import matplotlib.pyplot as plt
# sampling
x = np.linspace(0, 10, 10)
y = np.sin(x)
# spline trough all the sampled points
tck = interpolate.splrep(x, y)
x2 = np.linspace(0, 10, 200)
y2 = interpolate.splev(x2, tck)
# spline with all the middle points as knots (not working yet)
# knots = x[1:-1] # it should be something like this
knots = np.array([x[1]]) # not working with above line and just seeing what this line does
weights = np.concatenate(([1],np.ones(x.shape[0]-2)*.01,[1]))
tck = interpolate.splrep(x, y, t=knots, w=weights)
x3 = np.linspace(0, 10, 200)
y3 = interpolate.splev(x2, tck)
# plot
plt.plot(x, y, 'go', x2, y2, 'b', x3, y3,'r')
plt.show()
kodunun ilk bölümü kodudur (kontrol knot ve son noktalarını kullanarak) the main reference'dan çıkarıldı, ancak noktaları kontrol düğümü olarak nasıl kullanacağınız açıklanmadı.
Bu kodun sonucu, aşağıdaki görüntüdür.
puan örnekleridir, mavi çizgi dikkate tüm noktalar alır eğri olan. Ve kırmızı çizgi benim için çalışmıyor. tüm ara noktaları kontrol düğümleri olarak dikkate almaya çalışıyorum ama yapamam. knots=x[1:-1]
'u kullanmaya çalışırsam işe yaramıyor. Herhangi bir yardım için minnettar olurum.
Soru: spline işlevindeki tüm ara noktaları nasıl kontrol düğümü olarak kullanırım?
Not: Bu son görüntü tam olarak ihtiyacım olan şeydir ve sahip olduğum (tüm noktaları geçme) ve ihtiyacım olan şey (kontrol düğümü ile spline) arasındaki farktır. Herhangi bir fikir?
Wow! NX (veya Unigrapics) kullanan bu toplulukta gördüğüm ilk kişi sizsiniz. :-) – fang
Sadece ihtiyacım olan şeylerin temsili olarak kullanıyorum. Bunu python'da kodlamalıyım. =) – silgon
Ne yapmak istediğiniz genel B-spline uygulamasıdır. Eğer scipy B-spline interpolasyonunu yapabilirse, halihazırda genel bir B-spline uygulamasına sahip olmalıdır. Bu, uygun API ile müşterilere maruz kalsa da bilinmemektedir. – fang