数字信号处理课程研究报告
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步/分。
四、课题总结
本次课题与上一次十分相似,而通过完成上一次的基于脉搏信号计算心率课题后,完成本次课题也算是顺利了许多,没有在同一个地方翻跟斗。本次课题也达到了温故知新的效果,使我对滤波器的设计更加纯熟了一些,理解也更深了一点。