Scipy样条插值:在实际计算之前确定tck中的结/ B样条系数向量的数组长度

时间:2019-06-06 12:14:00

标签: python arrays scipy spline

在计算值之前,可以通过某种方式确定tck返回的scipy.interpolate.splprep元组中数组的数组长度吗?

我必须使样条曲线插值适合具有500万个数据点(或更少,可以变化)的嘈杂数据。 我的观察结果是,在〜90的数组长度处进行插值是相当不错的,而对于较长的数组长度,计算插值会花费很长时间(有时在使 s <时也可能从〜90跃升至〜1000。 / strong>小一点,插值也变得嘈杂),如果数组长度远小于(<50)...

实际上,此数组的长度取决于提供给splprep函数的平滑因子 s ,但是对于不同的测量数据, s 一致的数组长度大约为90。例如data1 s 的值约为1000,以获得len(cfk[0])等于90,data2 s 的值约为在len(cfk[0])data1的相同长度处,得到data2的100等于90。这可能取决于数据的噪音...

我考虑过一个循环,其中 s 从某个点开始并在不断检查len(cfk[0])的过程中逐渐减小-但这需要一段时间,特别是如果len(cfk[0])接近90。

因此,在计算cfk元组之前以某种方式知道平滑因子以获得所需的数组长度将很有用。

1 个答案:

答案 0 :(得分:0)

简短的回答:不,不容易。 splrep包装的Dierckx Fortran库使用了一些相当平凡的逻辑来确定结向量,并且所有这些都被烘焙到了Fortran代码中。因此,唯一的方法是仔细跟踪后者。可从netlib获得,也可以scipy / interpolate / fitpack