方法一, 最大最小值, 跳变取50%
这种方法很简单, 但是这种方法 有bug, maxPulse 和minPulse 会陷入极限值, 例如 -0 和 -65536
应当要注意初始化参数的取值. 即便是取值正确也仍然会陷入局部最小值, 导致minPulse和maxPulse 取值失去作用.
/// <summary>
/// 最大光电脉冲值
/// </summary>
public static float maxPulse = float.MinValue; //初始化这么小,是为了防止陷入默认值. 不变化
/// <summary>
/// 最小光电脉冲值
/// </summary>
public static float minPulse = float.MaxValue; //初始化这么大,是为了防止陷入默认值. 不变化
/// <summary>
/// 平均光电脉冲值
/// </summary>
public static float avgPulse = 0;
/// <summary>
/// 上一个光电脉冲值
/// </summary>
public static float prePulse = 0;
/// <summary>
/// 光电脉冲边沿检测
/// </summary>

该博客探讨了光电脉冲边沿检测算法的优化方法,包括最大最小值更新、变化率检测以及角度变化判断。作者指出原始算法可能存在的问题,如陷入局部最小值和对微小浮动的误判,并提出了改进方案,旨在更准确地识别上升沿和下降沿。
最低0.47元/天 解锁文章
834

被折叠的 条评论
为什么被折叠?



