重新啮合锯齿试验d

2024-05-19 02:29:30 发布

您现在位置:Python中文网/ 问答频道 /正文

背景

我有4组关于有刷直流电机的数据,都是从同一个实验中收集的:

  1. 扭矩vs速度(T vs w)
  2. 扭矩与效率(T与n)
  3. 扭矩vs输入功率(T vs引脚)
  4. 扭矩vs输出功率(T vs Pout)

但是,每个数据集都有:

  • 第一个和最后一个数据对的x值略有不同(每个数据集之间的T\u 0和T\u N不匹配)
  • 每个数据点之间的间距不同(并非所有集合的dT都相同)
  • 不同的大小(“T vs w”比“T vs Pin”有更多的数据对)

问题

这些差异使我无法在数据集之间进行处理。例如,我不能将单个实验的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函数是我最好的解决方案,尤其是因为我所有的数据点都是线性的。我的问题解决如下:

  1. 循环遍历每个数据集以查找共享域(min T\N,max T\u 0)
  2. 再次循环(第二次循环必要时),并为每个数据集创建interp1d函数
  3. 使用每个插值计算相同的均匀间隔域
  4. 将结果保存到文本文件

Tags: and数据函数datadomainall解决方案min
1条回答
网友
1楼 · 发布于 2024-05-19 02:29:30

另一种方法是为每个数据集计算分段线性插值函数,如您所说。我会把二次样条和三次样条放在同一个大类中。相反,您可以使用curvefit将合理的函数拟合到每个数据集。然后,可以选择max(T-0)作为所有拟合函数的起点,同样地,选择min(T-N)作为所有拟合函数的终点

相关问题 更多 >

    热门问题