概述
移动平均概述
接上章获得了三轴的加速度值,但人行走时的随意性和传感器的精度,导致加速度值并不准确从而不能直接拿来使用。所以在开始对数据进行处理。可采用简单移动平均法(SMA)来进行数据平滑。
简单原理
1,获取K组数据,相加除以K,得到平滑的数据
2,下次获取数据时,剔除第一个数据并将获取的数据加入
3,再将数据相加处理K,得到平滑数据,以此循环。
代码实现
创建quene类
对安卓不熟悉,安卓的queue好像是抽象类,不会用,索性自己自定义类实现队列。
5个元素的数组,头指针删除,尾指针插入。
public class queue {
private float[] data ;// 队列
private int front;// 队列头,允许删除
private int rear;// 队列尾,允许插入
private int LENGTH=5;
private int full=0;
private int t=0;
public queue() {
data = new float[LENGTH];
front = rear = 0;
}
// 入队
public void offer(float date) {
if (rear<LENGTH)
{
data[rear++] = date;
}
else
{
rear=0;
}
if (t++>=5)
full=1;
}
// 出队
public float poll() {
if (front<LENGTH)
{
float value = data[front];// 保留队列的front端的元素的值
front++;
return value;
}
else
{
front=0;
float value = data[front];
return value;
}
}
public boolean full()
{
if (full==1)
return true;
else
return false;
}
}
创建sma类
public class sma {
private queue queue_x;
private queue queue_y;
private queue queue_z;
private float max_x;
private float max_y;
private float max_z;
private int LENGTH=5;
sma()
{
queue_x=new queue();
queue_y=new queue();
queue_z=new queue();
}
public boolean ifture()//判断是否大于5
{
if (queue_x.full()&&queue_y.full()&&queue_z.full())
{
return true;
}
else
{
return false;
}
}
public void sma_init(float x,float y,float z)
{
max_x+=x;
max_y+=y;
max_z+=z;
queue_z.offer(z);
queue_x.offer(x);
queue_y.offer(y);
}
public void sma_run(float x ,float y,float z)//满足==5执行
{
max_x-= queue_x.poll();
queue_x.offer(x);
max_x+= x;
max_y-=queue_y.poll();
queue_y.offer(y);
max_y+=y;
max_z-=queue_z.poll();
queue_z.offer(z);
max_z+= z;
}
public float getx() {
return max_x/LENGTH;
}
public float gety() {
return max_y/LENGTH;
}
public float getz() {
return max_z/LENGTH;
}
}
sma的使用
if (sma1.ifture())
{
sma1.sma_run(x,y,z);
int x_=(int) sma1.getx();
int y_=(int) sma1.gety();
int z_=(int) sma1.getz();
textView.setText("x: "+x_+"y: "+y_+"z: "+z_+"n");
}
else
{
sma1.sma_init(x,y,z);
}
最后
以上就是疯狂狗为你收集整理的惯性室内导航入门到精通(2)-移动平均法的全部内容,希望文章能够帮你解决惯性室内导航入门到精通(2)-移动平均法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复