[英]Python: How to resample a 3d curve given by points as spline in equal distances?
請允許我將其與難度增加的問題分開:
1.
我有一些 1d 曲線,作為(n,)
點數組給出。
我想讓它重新采樣k
次,並且結果來自通過所有點的三次樣條。
這可以用interp1d來完成
2.曲線在非相同間隔樣本處以形狀為(n, 2)
的數組給出(n, 2)
其中(:, 0)
表示采樣時間, (:, 1)
表示樣本值。
我想在 k 個相同時間間隔重新采樣曲線。
如何才能做到這一點?
我以為我可以暫時執行t_sampler = interp1d(np.arange(0,k),arr[:, 0])
,然后執行interp1d(t_sampler(np.arange(0,k)), arr[:, 1])
我錯過了什么嗎?
3.
如何以相等的距離間隔重新采樣曲線? (問題 2 是相等的時間間隔)
4.
如果曲線是由形狀(n, 4)
數組給出的 3d 曲線,其中(:,0)
是(非均勻)采樣時間,其余是采樣的位置,該怎么辦?
很抱歉,單問題中的多問題,它們似乎太相似了,無法為每個問題打開一個新問題。
部分回答; 對於 1 和 2,我會這樣做:
from scipy.interpolate import interp1d
import numpy as np
# dummy data
x = np.arange(-100,100,10)
y = x**2 + np.random.normal(0,1, len(x))
# interpolate:
f = interp1d(x,y, kind='cubic')
# resample at k intervals, with k = 100:
k = 100
# generate x axis:
xnew = np.linspace(np.min(x), np.max(x), k)
# call f on xnew to sample y values:
ynew = f(xnew)
plt.scatter(x,y)
plt.plot(xnew, ynew)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.