背景
我有4组关于有刷直流电机的数据,都是从同一个实验中收集的:
但是,每个数据集都有:
问题
这些差异使我无法在数据集之间进行处理。例如,我不能将单个实验的t数组用于所有计算,也不能将测量的Pout与不同t下的计算Pout(t*w)进行比较
重新采样数据以生成大小一致的和间距一致的集合的最佳方法是什么?
尝试解决方案
For each data set:
find domain shared with all sets (max x_0 and min x_N between all x)
extract indices corresponding to shared domain
#(idx = np.where(np.logical_and(x>=xMin,x<=xMax)))
if set x_0 != shared x_0:
linearly interpolate for new y_0 based on old x & y, shared x_0, and shared y_0
Piecewise linear interpolation (my own custom function) of M data points in the set
然而,这仍然给了我不一致的结果,因为每个重新划分的数据集的“时间步长”在不同的数据集之间是不同的
假设
使用scipy的内置插值库为每个数据集生成一个线性插值函数,只需使用相同的起始值填充一个新的数据表;停止索引和时间步。 你知道吗
更新/解决方案
写下这个问题让我很快意识到scipy的interp1d函数是我最好的解决方案,尤其是因为我所有的数据点都是线性的。我的问题解决如下:
另一种方法是为每个数据集计算分段线性插值函数,如您所说。我会把二次样条和三次样条放在同一个大类中。相反,您可以使用curvefit将合理的函数拟合到每个数据集。然后,可以选择max(T-0)作为所有拟合函数的起点,同样地,选择min(T-N)作为所有拟合函数的终点
相关问题 更多 >
编程相关推荐