[英]Scipy spline interpolation: Determine array length of vector of knots / B-spline coefficients in tck before actual computation
在计算值之前,在scipy.interpolate.splprep
返回的tck
元组中数组的数组长度吗?
我必须将样条插值拟合到具有500万个数据点(或更少,可以变化)的噪声数据。 我的观察是,阵列长度为~90的插值是相当不错的,而计算插值需要很长时间才能获得更高的数组长度(有时也可以直接从~90跳到~1000,同时使s更小一步插值也变得有噪声)如果阵列长度远小于(<50),那就不够合适了......
实际上,这个数组的长度取决于提供给splprep
函数的平滑因子s ,但是对于不同的测量数据, s变化很大,以获得大约90的一致数组长度。例如,对于data1
s ,其值大约为1000以获得len(cfk[0])
等于90,因为data2
s的值大约为100,所以len(cfk[0])
等于90, data1
和data2
长度相同。 它可能取决于数据的噪音......
我已经考虑了一个循环,其中s从某个点开始并在循环中减少而len(cfk[0])
经常被检查 - 但这需要很len(cfk[0])
,特别是如果len(cfk[0])
接近90。
因此,在计算cfk元组之前以某种方式知道平滑因子以获得所需的阵列长度将是有用的。
简短回答:不,不容易。 Direckx Fortran库,splrep包装,使用一些相当重要的逻辑来确定结向量,并且它们都被融入Fortran代码中。 因此,唯一的方法是仔细追踪后者。 它可以从netlib获得,也可以scipy / interpolate / fitpack
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.