
public voID onSensorChanged(SensorEvent event){ // Alpha is calculated as t / (t + dT) // with t,the low-pass filter's time-constant // and dT,the event delivery rate final float Alpha = 0.8; gravity[0] = Alpha * gravity[0] + (1 - Alpha) * event.values[0]; gravity[1] = Alpha * gravity[1] + (1 - Alpha) * event.values[1]; gravity[2] = Alpha * gravity[2] + (1 - Alpha) * event.values[2]; linear_acceleration[0] = event.values[0] - gravity[0]; linear_acceleration[1] = event.values[1] - gravity[1]; linear_acceleration[2] = event.values[2] - gravity[2];} Alpha = 0.8计算出什么样的数值?
我想询问t和dT的具体值.
低通滤波器通常按以下顺序构建:
>你想切割的赫兹cutoff Frequency fc(这里重力是继续的,所以值应该在1Hz左右)
>Time-constantτ(tau)τ= 1 /(2 *π* fc)
>时间Δt以秒为单位. Δt= t2-t1
>平滑因子α,在这种情况下α=τ/(τΔt)
>以前的输出和新输入以获得新输出.
Alpha的功能是对值进行或多或少的重要性.为了工作,过滤器需要一个介于0和1之间的Alpha.在这种情况下,先前的输出(重力)权重为80%的新输出和新的输入(event.values)权重为20%=>新引力= 80%旧引力20%加速度.
Δt由传感器的实现给出.通常对于SENSOR_DELAY_NORMAL来说它是0.2秒.
τ由α= 0.8和Δt= 0.2s计算
从α中提取τ将给出:
τ = (∆t * α) / (1 - α)
并且使用之前的值,您会发现
τ = 0.2 * 0.8 / (1 - 0.8) = 0.8
使用τ,您可以计算fc:
fc = 1 / (2 * π * τ) = 1/( 2 * 3.14 * 0.8) = 0.2Hz.总结
以上是内存溢出为你收集整理的android – TYPE_ACCELEROMETER删除重力,t /(t dT)的含义全部内容,希望文章能够帮你解决android – TYPE_ACCELEROMETER删除重力,t /(t dT)的含义所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)