2013-11-26 52 views
-2

我有这些文字错过阵列什么问题平均值.. 我的程序工作每500ms,我想先读4个双重价值,并采取这些值的平均值,然后获得下一个4双价值观等...我写了一些关于这个,你可以看看这个?以每2秒

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