簡體   English   中英

Python:如何重新采樣由點作為樣條等距離給出的 3d 曲線?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM