每2秒取平均值

时间:2013-11-26 12:35:32

标签: c# moving-average

我在这些文本中遇到了数组或遗漏的问题。 我的程序每隔500毫秒运行一次,我想读取前4个双精度值并取这些值的平均值,然后获得接下来的4个双值等等......我写了一些关于这个的东西,你能看看这个吗?

if (u_dcbus_pv_act[i] > 0 && i != 0)
{
    u_dcbus_pv = u_dcbus_pv_act[i];
    p_dcbus_pv = p_dcbus_pv_act[i];
}
if (i >= 3)
{
    for (int j = 0; j < 4; j++)
    {
        total_u += u_dcbus_pv;
        total_p += p_dcbus_pv;
    }

    average_u = total_u / 4;
    average_p = total_p / 4;
    u_dcbus_target = average_u;
    p_dcbus_pv_avg = average_p;
}

1 个答案:

答案 0 :(得分:0)

根据我对你的描述的理解,我会这样做:

 /* add current samples to totals */
 total_u += u_dcbus_pv_act[i];
 total_p += p_dcbus_pv_act[i];

 /* every fourth tick, calc average and reset totals */
 if (i % 4 == 0)
 {
     average_u = total_u / 4;
     average_p = total_p / 4;
     total_u = 0;
     total_p = 0;
 }
 u_dcbus_target = average_u;
 p_dcbus_pv_avg = average_p;
 i++;