在计算值之前,可以通过某种方式确定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元组之前以某种方式知道平滑因子以获得所需的数组长度将很有用。
答案 0 :(得分:0)
简短的回答:不,不容易。 splrep包装的Dierckx Fortran库使用了一些相当平凡的逻辑来确定结向量,并且所有这些都被烘焙到了Fortran代码中。因此,唯一的方法是仔细跟踪后者。可从netlib获得,也可以scipy / interpolate / fitpack