您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页基于三轴加速度信号的步数计算

基于三轴加速度信号的步数计算

来源:华佗养生网


数字信号处理课程研究报告

Xxxxx学院电气与自动化工程学院

一、课题描述

已给定采集完毕的三轴加速度信号,使用MATLAB分析,并根据此信号计算走路步数。

二、课题分析

本课题的任务是根据采集的三轴加速度信号计算走路步数。首先使用MATLAB读取采集的三轴加速度信号,因为信号中存在较多扰动,不可以直接使用此信号计算步数,必须先进行滤波,得到理想的三轴加速度信号。最后捕获滤波后信号的波峰,根据步数=波峰数/总时间*60求得步数。

三、课题设计

三轴加速度信号的存储格式是文本格式,使用MATLAB中的load()函数读取。

经查阅资料可知信号的有用信息主要在0-5HZ,所以设计一个IIR低通滤波器,设置好其通带截止频率、阻带截止频率、通带波纹、阻带波纹。

最后使用findpeaks()函数捕获滤波后波形的波峰,计算步数。 1.MATLAB脚本

MATLAB程序如下:

clc; clear;

x=load('F:/丑永新_step.txt'); fss=50;ts=1/fss; N=length(x); t=fss:fss:N*fss; figure

plot(t,x(:,1),'r') hold on

plot(t,x(:,2),'g') hold on

plot(t,x(:,3),'b') legend('x轴','y轴','z轴')

aa=sqrt(x(:,1).^2+x(:,2).^2+x(:,3).^2); figure plot(t,aa)

title('加速度的波形') pinpu(fss,x);

title('原始信号的频谱')

%设计一IIR低通滤波器 fp=5;fs=8;

wp=2*fp/fss;ws=2*fs/fss; Rp=3;Rs=40;

[n,wc]=buttord(wp,ws,Rp,Rs); [b,a]=butter(n,wc,'low'); figure freqz(b,a)

title('滤波器的频率响应') y=filter(b,a,aa); pinpu(fss,y) axis([0 10 0 2])

title('滤波后加速度的幅频响应') figure plot(t,y)

title('滤波后波形') threshold=max(y)*0.6;

[pks,locs] = findpeaks(y,'minpeakheight',threshold); hold on

plot(locs*fss,pks,'x'); count=length(pks)/(N*ts)*60

2.设计结果

设计结果如下所示:

3.结果分析

将原始的加速度波形局部放大,可以发现干扰较严重,波形较为曲折,对比

滤波后的波形可以显著观察到波形得到了改善。通过频域分析则可以明显看到5HZ以内的信息被保留,而5HZ之上的干扰被滤除。

得到滤波后的波形之后,获取了波峰,求得步数为43.9步/分。

四、课题总结

本次课题与上一次十分相似,而通过完成上一次的基于脉搏信号计算心率课题后,完成本次课题也算是顺利了许多,没有在同一个地方翻跟斗。本次课题也达到了温故知新的效果,使我对滤波器的设计更加纯熟了一些,理解也更深了一点。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务