【问题标题】:Python: Average of multiple 2D curvesPython:多条二维曲线的平均值
【发布时间】:2016-01-28 06:01:18
【问题描述】:

我找到了许多答案,这些答案将平均一系列曲线的所有 Y 值,并将其称为所有图的平均值。

但是,我想要一个 2D 平均值,其中一个新的 X 和 Y 值(不仅仅是 Y 值)是从一些原始 X/Y 图确定的。

这是一个例子:

如您所见,紫色曲线具有蓝色曲线中不存在的 x 坐标,因此对 y 值进行平均是行不通的(至少对于我觉得最有趣的曲线部分而言) -结束/右上角)。

现在我完全意识到这可能是一个相当复杂的情况,因为找到中点的方向不断变化。 (什么叫 5 条曲线?不再只是一个简单的中点。)但我假设一些杰出的数学家在很久以前已经思考过这个问题并提出了一些非常简单的方法来做到这一点......

我正在寻找 Python 答案,但 Matlab 或类似答案也很好,因为我可以将其转录成 Python/Numpy 等。 此外,我的实际情况确实涉及“平均”5-10 条形状相似的曲线。

【问题讨论】:

  • 如何知道蓝色曲线中的哪个点对应粉色曲线中的哪个点?
  • 也许您应该计算某个基数的对数,拟合您的数据,然后仅平均 y 值。你试图做的,对我来说似乎不是很科学
  • 获得可能无限长的曲线拟合实际上是一个绝妙的主意。
  • @NoelSegura:好问题——我不知道!我知道我想要它看起来像什么......我能想到的最好的是我想要一个与两条曲线正常/垂直的中点?不过,不知道这对两条以上的曲线有何意义。
  • “正常”-->“尽可能接近正常”。这开始听起来像是涉及一些繁重的微积分,卷发或类似的东西。我当然不知道如何自己弄清楚。拉普拉斯、牛顿或其他人还真没有弄清楚这一点?

标签: python matlab numpy


【解决方案1】:

这就是我的想法。

获取蓝色曲线起点和粉色曲线起点的点。找到连接它们的线的中点。然后向前移动蓝色曲线的 1/n 和粉红色曲线的 1/n,其中 n 是您希望这条合并曲线的精确程度,并重复中点。如果你很聪明,你可能能够在检索到很多值后对得到的值进行插值,但这在这种情况下可能不是最有用的。

我不知道你是如何存储曲线的,但如果你能得到方程或类似的东西,那可能会有所帮助。

【讨论】:

  • 嗯...是的,如果我执行 'L/n',其中 L 是行的长度。 (否则,它们总是会选择相同的 X 值,从而仅导致上述 y 平均值。)
【解决方案2】:

基本上你需要找到曲线上的对应点,然后将它们平均在一起。诀窍是哪些点对应。有很多可能性,使用哪一种取决于曲线代表什么。

对应的点可能是:

  1. 垂直对齐的点
  2. 水平对齐的点
  3. 沿每条曲线的路径等距离指向。
  4. 沿每条曲线的路径等百分比点(麦克斯韦的想法)
  5. 蓝线上的一点,以及该点与蓝线的垂线与其他曲线的交点。
  6. 从图表左上角开始向右下方以 10、20、30... 度角的直线与曲线相交的点。

【讨论】:

  • Good ol' James Clerk。我可以试试(类似于@MaxwellChow 的回答)。它看起来并不完美 - 一条线的中点“尽可能接近两条线垂直”似乎是正确的答案,但我还没有最模糊的编码方法。不过,JCM 可能已经足够好了——明天试试。我可能应该在数学论坛上重新发布。
  • 当您说“将它们平均在一起”时 - 我猜您只是平均所有 X 值然后是所有 Y 值?是的,我猜对于两点的情况,这简化为标准中点。
猜你喜欢
  • 2019-02-27
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 2014-05-24
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多