如何以编程方式报告数据集中合理的局部最大值和最小值?
How to programatically report reasonable local maximas and minimas in a data set?
我有一个沿 x 轴均匀分布的 y 值数组,我需要以编程方式找到“槽”。我认为 Octave 或 Python3 是解决此问题的良好语言选择,因为我知道它们都具有强大的数学能力。
我想对函数进行插值并寻找导数为 0 的位置,但这需要我的人眼首先分析生成的图形以了解最大值和最小值已经在哪里,但我需要这整件事来是自动的;关于使用任意数据集。
我突然意识到这个问题可能在 Python3 或 Octave 函数或库中已有解决方案,但我找不到。是否存在可自动报告数据集中的局部最大值和最小值的库?
更多信息
我目前计划的方法是实施一种带有阈值的“n 日移动平均线”。初始化第一天移动平均线后,我将观察下一个移动平均线是否高于或低于它一个阈值。如果它走高,那么我会认为自己处于“上升”时期。如果它走低,那么我就处于“下跌”时期。当我处于上升期时,我将更新观察到的最大移动平均线,直到当前移动平均线充分低于前一个最大值。
此时,我会认为自己处于“坠落”期。我将锁定移动平均线先前最高的点,然后重复,除了在“下降”期间使用反逻辑。
在我看来,这可能是一个非常普遍的问题,所以我确信有一个现有的解决方案。
Python 回答:
这是一个常见问题,已有解决方案。
示例包括:
- peakutils
- scipy find_peaks
- 另见this问题
在所有情况下,您都必须测试您的参数以获得您想要的结果。
八度答案:
我相信 immaximas
和 imregionalmax
完全符合您的要求(取决于您正在寻找的两者中的哪一个 - 查看他们的文档以了解差异)。
这些是 image
包的一部分,但显然也适用于 1D 信号。
更多'functional'找零功能,还有fzero
等
我有一个沿 x 轴均匀分布的 y 值数组,我需要以编程方式找到“槽”。我认为 Octave 或 Python3 是解决此问题的良好语言选择,因为我知道它们都具有强大的数学能力。
我想对函数进行插值并寻找导数为 0 的位置,但这需要我的人眼首先分析生成的图形以了解最大值和最小值已经在哪里,但我需要这整件事来是自动的;关于使用任意数据集。
我突然意识到这个问题可能在 Python3 或 Octave 函数或库中已有解决方案,但我找不到。是否存在可自动报告数据集中的局部最大值和最小值的库?
更多信息
我目前计划的方法是实施一种带有阈值的“n 日移动平均线”。初始化第一天移动平均线后,我将观察下一个移动平均线是否高于或低于它一个阈值。如果它走高,那么我会认为自己处于“上升”时期。如果它走低,那么我就处于“下跌”时期。当我处于上升期时,我将更新观察到的最大移动平均线,直到当前移动平均线充分低于前一个最大值。
此时,我会认为自己处于“坠落”期。我将锁定移动平均线先前最高的点,然后重复,除了在“下降”期间使用反逻辑。
在我看来,这可能是一个非常普遍的问题,所以我确信有一个现有的解决方案。
Python 回答:
这是一个常见问题,已有解决方案。 示例包括:
- peakutils
- scipy find_peaks
- 另见this问题
在所有情况下,您都必须测试您的参数以获得您想要的结果。
八度答案:
我相信 immaximas
和 imregionalmax
完全符合您的要求(取决于您正在寻找的两者中的哪一个 - 查看他们的文档以了解差异)。
这些是 image
包的一部分,但显然也适用于 1D 信号。
更多'functional'找零功能,还有fzero
等