标准 EMA 公式是EMA_t (1-α)*EMA_{t-1} α*C_t还有一种写法是EMAtEMAt−1α(Ct−EMAt−1)// EMA 平滑系数 const float EMA_ALPHA 1 - 0.7f; // 新值权重 const float EMA_BETA 0.7f; // 历史值权重 float mid_smooth 320.0f; // 平滑中线 float width_smooth 300.0f; // 平滑赛道宽度 float curve_smooth 0.0f; // 平滑曲率 // 1. 计算当前真实宽度 int now_width right_line[y] - left_line[y]; // 2. 指数滑动平均例子 mid_smooth EMA_BETA * mid_smooth EMA_ALPHA * now_mid; width_smooth EMA_BETA * width_smooth EMA_ALPHA * now_width; curve_smooth EMA_BETA * curve_smooth EMA_ALPHA * now_curve; //或者 smooth_val EMA_ALPHA * (new_val - smooth_val);
C++实现EMA平滑
标准 EMA 公式是EMA_t (1-α)*EMA_{t-1} α*C_t还有一种写法是EMAtEMAt−1α(Ct−EMAt−1)// EMA 平滑系数 const float EMA_ALPHA 1 - 0.7f; // 新值权重 const float EMA_BETA 0.7f; // 历史值权重 float mid_smooth 320.0f; // 平滑中线 float width_smooth 300.0f; // 平滑赛道宽度 float curve_smooth 0.0f; // 平滑曲率 // 1. 计算当前真实宽度 int now_width right_line[y] - left_line[y]; // 2. 指数滑动平均例子 mid_smooth EMA_BETA * mid_smooth EMA_ALPHA * now_mid; width_smooth EMA_BETA * width_smooth EMA_ALPHA * now_width; curve_smooth EMA_BETA * curve_smooth EMA_ALPHA * now_curve; //或者 smooth_val EMA_ALPHA * (new_val - smooth_val);