高级会员

- 积分
- 824
- 金钱
- 824
- 注册时间
- 2016-3-17
- 在线时间
- 192 小时
|
1金钱
预测数据A;检测的数据B;定时器延时1分钟执行;static bool flag = true; /*flag是为了保证斜率不变的*/
static float middle = 0.0;
if( A != B )
{
if( flag )
{
middle = 0.0;
middle = ( B- A ) / 60.0f; /* 由于定时器每1分钟执行一次,将两者之间的差值分成60份,即在1小时将A调整至B */
flag = false;
}
A += middle;
}
if( B <= ( A * 1.1f) && B >= ( A * 0.9f)) /* A与B相临近时,把标志位设置为true,为了防止数据突变时,flag为false时middle不能改变 */
{
flag = true;
}
此方法不稳定:程序一开始假如 B > A 时, if( flag )成立,middle是正值,flag = false;A += middle,A逐渐向B靠近。万一检测数据有干扰波动,B < A了,由于flag 为false,无法改变middle,导致A += middle后A越来越大。请问有什么可以改进的方法吗?谢谢!
|
|