对比两组数据可以看出,当拿起手机时传感器数据的变化非常明显。那我们就可以假设手机系统中有一个特殊的模块,可以根据传感器的数据变化,来识别用户拿起手机的动作。该模块中接收到的传感器数据的变化规律类似上图,那么就可以判断用户当前已经拿起了手机,进而把识别结果传递给显示模块,最终点亮屏幕。
这里的变化规律指的是连续数据的特征值, 如统计学中的均值、方差、最值等。
通过用户在操作手机时产生的传感器数据,我们提取出了每组数据的均值、方差。把每组数据的均值(x轴)、方差(y轴)以散点图的形式展现出来(如下图),可以观察到,抬起动作的特征数据(蓝色点)基本都在蓝色圈的范围之内,而其它动作产生的特征数据(除蓝色点外其它颜色的点)都分散在坐标系的各个位置。
有了这一规律,我们就可以基本确定抬起动作的特征数据范围,通过编写程序来判断本次操作是否为抬起动作。
综上所述,想要判断抬起动作,需要预先收集大量的(拿起手机行为的)传感器数据,把这些传感器的特征值提取并归纳,看这些值都在怎样的范围波动。
有了取值范围,就可以编写程序来判断新产生的数据的特征值是否在这个范围之内,综合多个特征的判断可以给出一个总体评分,来识别用户新产生的数据属于抬起动作的概率为多少。
最终的识别结果被传递给手机显示模块,如果被识别为抬起动作,则唤醒屏幕。如下图所示: