当前位置: 首页 > 知识库问答 >
问题:

如何计算指数移动平均线的X°步长?

勾长卿
2023-03-14

我使用基本的指数移动平均线过滤器平滑一些数据:

int main ()
{
    double a0 = 0.1;
    double input = 8.0;
    double z = 0.0;

    for(int i=0; i < 200; i++) {
        z += a0 * (input - z);
        std::cout << i  << "° : "<< z << std::endl;
    }
}

出于某些原因,我想每X(=8)步做一次。事实是,就目前而言,我不知道如何计算每8°输入的值。我仍然在处理每个输入,并且只“存储”8°。

您将如何“节省CPU”避免在每一步计算它?是否有一个系列,我可以提前计算8°值?

这是我的实际代码(每一步都很平滑):

int main ()
{
    double a0 = 0.1;
    double input = 8.0;
    double z = 0.0;
    int step = 8;


    for(int i=0; i < 200; i+=8) {
        z += a0 * (input - z);
        std::cout << i  << "° : "<< z << std::endl;

        int j = 1;
        while (j++ < step) {
            z += a0 * (input - z);
        }
    }
}

我想避免将“while的7个步骤”变成一个独特的操作。有可能吗?

共有1个答案

范振海
2023-03-14

之所以称之为指数移动平均函数是因为:差值是步数的指数递减函数。事实上,在N步之后,减少的功率是功率(1-a0,N)。

现在相关的数学是pow(x,N)==pow(pow(x,8),N/8)。

 类似资料:
  • 公式链接:https://sciencing.com/calculate-exponential-moving-averages-8221813.html

  • 问题内容: 我需要做类似的事情: 除了,我还需要检索的前20个值的移动平均值。 首选标准SQL,但如有必要,我将使用MySQL扩展。 问题答案: 这只是我的头顶,而且我正要出门,所以未经测试。我也无法想象它会在任何种类的大数据集上表现出色。我确实确认它至少可以正常运行。:)

  • 问题内容: 美好的一天, 我正在使用以下代码来计算9天移动平均线。 但这是行不通的,因为它会在调用限制之前先计算所有返回的字段。换句话说,它将计算该日期之前或等于该日期的所有关闭时间,而不仅仅是最后9个。 因此,我需要从返回的选择中计算出SUM,而不是直接计算出来。 IE浏览器 从SELECT中选择SUM … 现在我将如何去做,这是非常昂贵的还是有更好的方法? 问题答案: 使用类似 内查询返回的所

  • 问题内容: 我有一个日期范围,并且每个日期都有一个度量值。我想计算每个日期的指数移动平均值。有人知道怎么做这个吗? 我是python的新手。似乎没有将平均值内置到标准python库中,这让我感到有些奇怪。也许我找的地方不对。 因此,给定以下代码,如何计算日历日期的IQ点的移动加权平均值? (可能是一种更好的数据结构方式,任何建议将不胜感激) 问题答案: 编辑:看来SciKits(补充SciPy的附

  • 我也看过Pyspark中的加权移动平均线,但我需要一个Spark/Scala的方法,以及10天或30天的均线。 有什么想法吗?