gpt4 book ai didi

c++ - 您将如何计算指数移动平均线的 X° 步长?

转载 作者:搜寻专家 更新时间:2023-10-31 01:30:42 28 4
gpt4 key购买 nike

我使用基本的指数移动平均线对一些数据进行平滑处理 filter :

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° 值?

这是实际的 code我有(每一步都很顺利):

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);
}
}
}

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

最佳答案

它被称为指数移动平均函数是有原因的:差异(input - z0) 是步数的指数递减函数。事实上,在 N 步之后减少的是 pow(1-a0,N)

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

关于c++ - 您将如何计算指数移动平均线的 X° 步长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47225704/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com