【问题标题】:How to programatically report reasonable local maximas and minimas in a data set?如何以编程方式报告数据集中合理的局部最大值和最小值?
【发布时间】:2021-03-02 02:53:12
【问题描述】:

我有一组沿 x 轴均匀分布的 y 值,我需要以编程方式找到“波谷”。我认为 Octave 或 Python3 都是解决这个问题的好语言选择,因为我知道两者都有很强的数学能力。

我想对函数进行插值并查找导数为 0 的位置,但这需要我的人眼首先分析结果图以了解最大值和最小值已经在哪里,但我需要整个过程是自动的;用于处理任意数据集。

我突然意识到这个问题可能在 Python3 或 Octave 函数或库中有一个现有的解决方案,但我找不到。是否存在自动报告数据集中的局部最大值和最小值的库?

更多信息

我目前计划的方法是实施一种带有阈值的“n 日移动平均线”。在初始化第一天移动平均线后,我将观察下一个移动平均线在其上方或下方移动一个阈值。如果它走高,那么我会认为自己处于“上升”时期。如果它走低,那么我就处于“下跌”时期。当我处于上升期时,我会更新观察到的最大移动平均线,直到当前移动平均线充分低于之前的最大值。

在这一点上,我会认为自己处于“下降”时期。我将锁定移动平均线之前最高的点,然后重复,除了对“下降”期间使用逆逻辑。

在我看来,这可能是一个很常见的问题,所以我确信有一个现有的解决方案。

【问题讨论】:

    标签: python python-3.x math octave analytics


    【解决方案1】:

    Python 答案:

    这是现有解决方案的常见问题。 示例包括:

    在所有情况下,您都必须测试您的参数以获得您想要的。

    【讨论】:

    • scipy find peaks 运行良好。我什至可以先将我的值乘以 -1 来找到山谷。
    【解决方案2】:

    八度答案:

    我相信 immaximasimregionalmax 完全符合您的要求(取决于您正在寻找的两者中的哪一个 - 查看他们的文档以了解不同之处)。

    这些是image 包的一部分,但显然也适用于一维信号。

    更多“功能性”寻零功能,还有fzero等。

    【讨论】:

      猜你喜欢
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      相关资源
      最近更新 更多