- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个关于 scipy 的 splrep 函数的问题,我认为这是一个错误,所以我将发布每段代码,以便您可以在您的计算机上重现它。假设我想找到一些数据的 b 样条表示,例如,通过以下代码获得的数据,它创建了一个数据集,该数据集由 10 个高斯分布和一些添加的噪声混合而成:
import numpy as np
# First we define the number of datapoints:
ndata = 100
x = np.arange(0,1,1./np.double(ndata))
means = np.random.uniform(0,1,10)
y = 0.0
for i in range(len(means)):
y = y+np.exp(-(x-means[i])**2./0.01)
# We add some noise to obtain the data:
data = y + np.random.normal(0,0.05,len(y))
应该是这样的: 现在,让我们使用 splrep 和 splev 函数来获得该曲线的 b 样条表示:
from scipy.interpolate import splrep,splev
# First define the number of knots. Let's put, say, 10 knots:
nknots = 10
# Now we crate the array of knots:
knots = np.arange(x[1],x[len(x)-1],(x[len(x)-1]-x[1])/np.double(nknots))
tck = splrep(x,data,t=knots)
fit = splev(x,tck)
如果你绘制到这里的所有内容,一切似乎都很好: 但是,数据点数量和节点数量的某些组合存在问题。例如,如果您使用 ndata = 1931
和 nknots = 796
尝试上面的代码,我会收到以下错误:
File "/usr/lib/python2.7/dist-packages/scipy/interpolate/fitpack.py", line 465, in
splrep raise _iermess[ier][1](_iermess[ier][0])
ValueError: Error on input data
这给我带来了问题,因为上面的代码是不可自动化的。我正在处理具有约 19000 个数据点的数据集,其中使用 try
和 except
的 while
循环在计算上要求很高。所以我的问题是:
最佳答案
我找到了解决问题的方法。它可能与适合两个结之间的少量数据点有关,所以我所做的是用以下代码替换我创建结数的行:
idx_knots = (np.arange(1,len(x)-1,(len(x)-2)/np.double(nknots))).astype('int')
knots = x[idx_knots]
通过这种方式,我确保节点之间有足够的数据点,因为我使用了 x 向量的索引。
关于python - 在 scipy.insterpolate 的 splrep 函数上选择节点的错误(?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14533908/
使用 scipy 的 splrep我可以很容易地适应测试正弦波: import numpy as np from scipy.interpolate import splrep, splev impo
我有一组数据点,想用样条函数对它们进行近似。我使用了两个不同的函数: splrep 来自 scipy 和我发现的三次样条函数here . 结果看起来像this . 代码如下: from matplot
从视频记录中可以提取行人穿过瓶颈的头部轨迹。因为,行人在移动轨迹时会摇摆,所以我想消除这种令人讨厌的振荡。 (平滑算法与本题无关) 结果显示在这个 figure 中。 因此,我的目标是使用蓝点(称为零
我不明白 interpolate.splrep 函数是如何工作的。简单的代码不会抛出任何错误,但 interpolate.splev 会返回意外结果。 degree = 4; arg = np.lin
我正在编写以下代码,非常基础,只是在 scipy.interpolate 中调用 splrep。但是它会在数据集上抛出错误。 代码如下 x_nodesTrial = np.array([ 1321.,
我需要在 x-y 平面中定义的一维线上拟合由三阶多项式组成的样条线。多项式的导数在关节处必须相等。预期输出是三阶多项式列表,由它们的起点(样条结)及其多项式系数定义。 我认为 scipy 的 splr
我正在使用 scipy.interpolate.splrep 进行三次样条插值,如下所示: import numpy as np import scipy.interpolate x = np.lin
使用一些实验数据,我无法终生弄清楚如何使用 splrep 创建 B 样条曲线。数据在这里:http://ubuntuone.com/4ZFyFCEgyGsAjWNkxMBKWD 摘录如下: #Dept
我正在尝试将三次样条拟合到一组给定的点。我的积分没有排序。我无法对这些点进行排序或重新排序,因为我需要该信息。 但由于函数 scipy.interpolate.splrep 仅适用于非重复和单调递增的
我有一个关于 scipy 的 splrep 函数的问题,我认为这是一个错误,所以我将发布每段代码,以便您可以在您的计算机上重现它。假设我想找到一些数据的 b 样条表示,例如,通过以下代码获得的数据,它
scipy.interpolate.splrep(x, y, w=None, xb=None, xe=None, k=3, task=0, s=None, t=None, full_output=0,
[原始问题] 我需要一个曲线方程,它根据以下数据随着时间的推移无限增加。如何获得? [问题更新] 我需要为 scipy.interpolate.splrep 指定正确的参数。有人可以帮忙吗? 还有,有
我有一个 data set第一列是x数据(波长),第二列是y数据(相对强度)。 我希望将它插值到另一个 x_new-data 但我的问题是 splrep 返回 nan-values: >>import
我是一名优秀的程序员,十分优秀!