一次按下可能在采样记录里出现短暂反复。消抖过滤关注的是新状态连续出现了多久,而不是把一小段时间内的按下次数累加起来。它能减少跳变,也会推迟确认。
确认状态从零开始。新样本等于确认状态时清空候选计数;不等于确认状态时计数加一,只有连续达到门槛才切换确认状态并把计数归零。这里信号只有零和一。
门槛2个连续样本;索引从零开始 [0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
样本0输入0,确认值0,待确认连续数0,未切换。
样本1输入0,确认值0,待确认连续数0,未切换。
样本2输入1,确认值0,待确认连续数1,未切换。
样本3输入0,确认值0,待确认连续数0,未切换。
样本4输入1,确认值0,待确认连续数1,未切换。
样本5输入1,确认值1,待确认连续数0,本次切换。
样本6输入1,确认值1,待确认连续数0,未切换。
样本7输入1,确认值1,待确认连续数0,未切换。
样本8输入0,确认值1,待确认连续数1,未切换。
样本9输入1,确认值1,待确认连续数0,未切换。
样本10输入1,确认值1,待确认连续数0,未切换。
样本11输入0,确认值1,待确认连续数1,未切换。
样本12输入0,确认值0,待确认连续数0,本次切换。
样本13输入0,确认值0,待确认连续数0,未切换。
样本14输入1,确认值0,待确认连续数1,未切换。
样本15输入1,确认值1,待确认连续数0,本次切换。
样本16输入1,确认值1,待确认连续数0,未切换。
样本17输入1,确认值1,待确认连续数0,未切换。
样本18输入0,确认值1,待确认连续数1,未切换。
样本19输入0,确认值0,待确认连续数0,本次切换。
样本20输入0,确认值0,待确认连续数0,未切换。
样本21输入0,确认值0,待确认连续数0,未切换。
样本22输入0,确认值0,待确认连续数0,未切换。
样本23输入0,确认值0,待确认连续数0,未切换。
样本24输入0,确认值0,待确认连续数0,未切换。
样本25输入0,确认值0,待确认连续数0,未切换。
样本26输入0,确认值0,待确认连续数0,未切换。
样本27输入0,确认值0,待确认连续数0,未切换。
样本28输入0,确认值0,待确认连续数0,未切换。
样本29输入0,确认值0,待确认连续数0,未切换。
样本30输入0,确认值0,待确认连续数0,未切换。
样本31输入0,确认值0,待确认连续数0,未切换。
样本32输入0,确认值0,待确认连续数0,未切换。
样本33输入0,确认值0,待确认连续数0,未切换。
样本34输入0,确认值0,待确认连续数0,未切换。
样本35输入0,确认值0,待确认连续数0,未切换。
样本36输入0,确认值0,待确认连续数0,未切换。
样本37输入1,确认值0,待确认连续数1,未切换。
样本38输入1,确认值1,待确认连续数0,本次切换。
样本39输入1,确认值1,待确认连续数0,未切换。
样本40输入1,确认值1,待确认连续数0,未切换。
样本41输入1,确认值1,待确认连续数0,未切换。
确认跳变发生在索引[5, 12, 15, 19, 38]。原始信号反复不等于游戏应该立即反复响应,输出状态改变时才形成相应边沿。
逐段观察原始信号的连续运行长度,短于门槛的反向片段不应改变输出。已确认的长按不需要每隔几个样本再触发一次;确认状态与按下事件应分开记录。
建议先遮住结果,用本例原始输入独立完成一遍,再逐项对照。若出现差异,先找最早不一致的位置,检查索引从零还是从一开始、边界是否包含,以及比较或更新发生的先后。只比较最后一个数,往往无法分辨规则理解与计算步骤分别出了什么问题。
本例只演示按样本数消抖,不能给所有设备推荐同一门槛。采样间隔若不固定,应按时间衡量稳定区间。把门槛调大可以过滤更长的反复,但也会带来更明显的操作延迟。
以便获取最新的优惠活动以及最新资讯!