- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下一段代码。它生成以参数形式给出的给定 3-D 函数的 3-D 三次样条。我几乎使用 splprep 的在线文档将其适应了我的情况。和 splev .
但我有一些不明白的地方。这是代码:
%matplotlib inline
from numpy import arange, cos, linspace, pi, sin, random
from scipy.interpolate import splprep, splev
import matplotlib.pyplot as plt
# make ascending spiral in 3-space
t=linspace(0,1.75*2*pi,100)
x = sin(t)
y = cos(t)
z = t
# spline parameters
s=3.0 # smoothness parameter
k=3 # spline order
nest=-1 # estimate of number of knots needed (-1 = maximal)
# find the knot points
tck,u = splprep([x,y,z],s=s,k=k,nest=-1)
# evaluate spline, including interpolated points
xnew,ynew,znew = splev(linspace(0,1,400),tck)
(t,c,k)
究竟是做什么的?在这种情况下元组返回?。我阅读了文档,它说它返回结点、系数和样条的度数。结点不是必须是 (x, y, z) 形式的坐标吗?。所以我们必须有"number of knots"
这样的坐标点。但这不是返回的内容。我们只是得到一个数组 length 11
. u
返回? (文档说它返回参数的值。这是什么意思?参数的值 t
?11
结点)。但是我如何指定我自己的结点数量,比如 50 或 80 等? 最佳答案
参数值,u
这个想法是你的点 [x,y,z] 是一些参数化曲线的值,原始参数在你的例子中是 t 。了解参数 t 的值有助于弄清楚如何在这些点之间进行插值。因此,您可以选择将参数的值作为可选参数传递 u
(在本例中为 u=t
)。但如果您选择不这样做,该方法将根据给定点之间的距离(参数间隔为 0 到 1)对参数值进行猜测。这个猜测然后作为变量返回给你 u
,所以你知道数据是如何解释的。如果您确实将 u=t 作为参数传递,则 u
你回来是完全一样的。
你真的不需要这个 u
使用样条。但是,如果希望将原始 [x,y,z] 点的位置与样条的值进行比较,那么您可能需要传递 u
作为 splev
的参数.用更简短的方式解释 u
的含义是:这是什么splev
需要重现 [x,y,z]
您开始使用的坐标,由于平滑而存在一些偏差。
tck 值
样条的结点,t
, 是参数区间中的点,而不是 3D 空间中的点。由于在您的示例中,参数区间为 [0,1],默认情况下选择,因此 t 的值在此范围内。节点是参数区间上样条的某些系数发生变化的地方。端点 0 和 1 在技术上是多个节点,因此它们被多次列出。
曲线的 3D 性质由系数 c
表示.您可能会注意到它是一个包含三个数组的列表,每个坐标一个。
结点数
使用此插值例程,您有两种选择:
task=-1
并提供 t
与结的论点)。为避免混淆:此 t
不一定是 t
从中你得到了点 [x,y,z]。人们不一定希望每个样本点都是一个结点。 s
的值。 ,因此可以间接影响。例如,对于您的数据,s=3 有 11 节,s=1 有 12 节,s=0.1 有 14 节。
关于numpy - 使用scipy.splprep时如何指定结点数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41659075/
我希望使用 B 样条曲线计算 numpy 中闭合曲线的曲率。我想评估样条表示的导数而不是数据以获得平滑的结果。但是下面的代码返回错误: Traceback (most recent call
或 为什么 splprep 不能使用它自己的结? 我想弄清楚如何在 scipy.interpolate.splprep 中设置结。在非周期性情况下我成功了,即我可以重现 this SE example
我现在有一些离散点,我使用 scipy.interpolate.splprep () 函数(B 样条插值)对其进行插值,以获得令人满意的平滑曲线。这是代码(借鉴另一个问题的答案)和我得到的结果。 im
我正在尝试使用 SciPy 的 interpolate.splprep 方法将曲线插值到一组 (x,y) 点,使用此 StackOverflow answer 中遵循的过程。我的代码(带有数据)如下所
我有以下数据: x_old = [ 0.00000000e+00, -5.96880765e-24, -8.04361605e-23, -2.11167774e-22, -2.3038
我是一名优秀的程序员,十分优秀!