基于miu小波变换的人体步态数据检测和识别算法matlab仿真
目录
一、理论基础
3.2.1加速度计
3.2.2陀螺仪
3.3基于IMU设备的人体步态数据的采集
二、MATLAB仿真程序
三、仿真结果
一、理论基础
在进行数据采集的过程中,需要根据实际情况选择合适的采集设备,现有的采集设备一般都是由多个传感器模块、显示模块、电源模块以及通信模块构成。在本课题中,我们选择了BWT61CL无线蓝牙版带电池陀螺仪姿态传感器作为本文的数据采集设备。该设备的主要参数指标如下表所示:
表1陀螺仪姿态传感器参数指标
参数名称 |
参数值 |
|
1 |
电压 |
3.3V~5V |
2 |
电流 |
<10mA |
3 |
尺寸 |
51.3mm*36mm*15mm |
4 |
测量精度 |
0.05 |
5 |
量程 |
加速度16g,角速度2000度/s,角度180度 |
6 |
分辨率 |
加速度6.1e-5g,角速度7.6e-3度/s |
7 |
测量维度 |
三维 |
8 |
输出频率 |
100Hz |
BWT61CL姿态传感器其主要构架包括了传感器模块、信号处理单元、信号收发接口等模块,其具有低功耗、低成本、轻便等优势[19]。该设备广泛应用于手机,GPS导航、计步器以及智能儿童手表等电子产品中,下面对该IMU设备的各个模块进行介绍。
3.2.1加速度计
加速度计是BWT61CL姿态传感器的一个重要组成部分,其属于惯性传感器的一种,通过加速度计可以采集人体的加速度信息,包括x轴加速度,y轴加速度以及z轴加速度。当人体在行走或者奔跑过程中,其加速度将表现为周期性的波动,那么通过加速度计则可以实时监测这种周期性变化,并根据这种周期特征来计算人体的步态和步伐数量。当人体处于静止状态或者匀速状态,此时加速度计只有垂直方向有数据,且近似为重力加速度。
3.2.2陀螺仪
陀螺仪同样是BWT61CL姿态传感器的一个重要组成部分,通过陀螺仪可以实时监测出人体在行走过程中的角速度。BWT61CL中的陀螺仪,其转轴方向将不随着支架的转动而变化,当设备收到外部角度变化的时候,其上下金属之间的电容会发生变化,根据电压值的改变大小来判断角度的变化大小。
3.3基于IMU设备的人体步态数据的采集
数据采集环节是人体步行识别和步伐统计研究的第一环节,在本课题中,我们主要通过BWT61CL姿态传感器进行采集行人的xyz三个方向的加速度,xyz三个方向的角速度以及xyz三个方向的角度(如图3.1所示),为课题的研究提供最原始的分析数据。
图1数据采集示意图
通过采集得到的数据主要包括人体沿着x轴、y轴、z轴的加速度,即ax,ay,az;沿着x轴、y轴、z轴的姿态角,即横滚角anglex,俯仰角angley,偏航角anglez,沿着x轴、y轴、z轴的角速度,即wx,wy,wz;一共九组特征数据。由图3.1可知,横滚角以x轴作为旋转轴,俯仰角以y轴作为旋转轴,航偏角以z轴为旋转轴。通过IMU设备对数据进行实时的采集,可以记录行人不同的行走状态。最终采集的数据结构如下所示:
图2数据样本图
二、MATLAB仿真程序
clc;
clear;
close all;
warning off;sel = 2; load R1.mat[locsy1,indxy1]=func_peak(ay1);
[locsz1,indxz1]=func_peak(az1);[locsy2,indxy2]=func_peak(ay2);
[locsz2,indxz2]=func_peak(az2);[locsy3,indxy3]=func_peak(ay3);
[locsz3,indxz3]=func_peak(az3);if sel == 1figure;
subplot(211);
plot(Timesa,ay1,'b');
hold on
plot(Timesa(locsy1),ay1(locsy1),'ro');
hold on
plot(Timesa(indxy1),ay1(indxy1),'k*');
hold on
stem(Timesa(locsy1),ay1(locsy1),'ro')
xlabel('time');
ylabel('ay');
subplot(212);
plot(Timesa,az1,'b');;
hold on
plot(Timesa(locsz1),az1(locsz1),'ro');
hold on
plot(Timesa(indxz1),az1(indxz1),'k*');
hold on
stem(Timesa(locsz1),az1(locsz1),'ro')
xlabel('time');
ylabel('az');Tay1 =[Timesa(locsy1)]';
Tby1 =[Timesa(indxy1)]';
Ay1 =[ay1(locsy1)]'; Taz1 =[Timesa(locsz1)]';
Tbz1 =[Timesa(indxz1)]';
Az1 =[az1(locsz1)]'; ptime1 = [67.574,68.031,68.602,69.235,69.775,70.352,70.922,71.636,72.201,72.66,73.212];
ptime2 = [67.407,68.12,68.762,69.347,69.881,70.448,70.998,71.567,72.20,72.755,73.307];for i = 1:length(ptime1)-1diff1(1,i)=ptime1(i+1)-ptime1(i);diff2(1,i)=ptime2(i+1)-ptime2(i);
end
2*mean(diff1)
2*mean(diff2)
figure;
plot(ptime1-ptime2);p1=[66.2,66.402,66.519,66.746,66.951,67.05,67.198,67.343,67.499,67.615,67.913,68.201,68.531,68.868,69.155,69.393,69.698,69.991,70.235,70.559,70.802,71.145,71.381,71.687,71.972,72.288,72.53,72.844,73.104,73.431,73.707,73.858];
p2=[66.936,67.170,67.360,67.499,68.021,68.333,68.531, 68.554,68.629,68.951,69.222,69.56,69.798,70.021,70.378,70.596,70.611,70.661,70.667,70.671,70.979,71.197,71.553,71.794,72.1,72.321,72.678,72.911,73.245,73.423,73.493,73.847,73.994];for i = 1:length(p1)-1diff1(1,i)=p1(i+1)-p1(i);diff2(1,i)=p2(i+1)-p2(i);
end
5*mean(diff1)
5*mean(diff2)ay=mean(sqrt(ax1(locsz1).^2 + ay1(locsz1).^2 + az1(locsz1).^2))endif sel == 2
figure;
subplot(211);
plot(Times2,ay2,'b');
hold on
plot(Times2(locsy2),ay2(locsy2),'ro');
hold on
plot(Times2(indxy2),ay2(indxy2),'k*');
hold on
stem(Times2(locsy2),ay2(locsy2),'ro')
xlabel('time');
ylabel('ay');
subplot(212);
plot(Times2,az2,'b');;
hold on
plot(Times2(locsz2),az2(locsz2),'ro');
hold on
plot(Times2(indxz2),az2(indxz2),'k*');
hold on
stem(Times2(locsz2),az2(locsz2),'ro')
xlabel('time');
ylabel('az');ptime1 = Times2(locsy2);
ptime2 = Times2(indxz2);for i = 1:length(ptime1)-1diff1(1,i)=ptime1(i+1)-ptime1(i);diff2(1,i)=ptime2(i+1)-ptime2(i);
end
2*mean(diff1)
2*mean(diff2)
% figure;
% plot(ptime1-ptime2);p1=Times2(indxy2(4:end));
p2=Times2(indxz2);for i = 1:length(p1)-1diff1(1,i)=p1(i+1)-p1(i);diff2(1,i)=p2(i+1)-p2(i);
end
5*mean(diff1)
5*mean(diff2)ay=mean(sqrt(ax2(locsz2).^2 + ay2(locsz2).^2 + az2(locsz2).^2))
endif sel == 3
figure;
subplot(211);
plot(Times3,ay3,'b');
hold on
plot(Times3(locsy3),ay3(locsy3),'ro');
hold on
plot(Times3(indxy3),ay3(indxy3),'k*');
hold on
stem(Times3(locsy3),ay3(locsy3),'ro')
xlabel('time');
ylabel('ay');
subplot(212);
plot(Times3,az3,'b');;
hold on
plot(Times3(locsz3),az3(locsz3),'ro');
hold on
plot(Times3(indxz3),az3(indxz3),'k*');
hold on
stem(Times3(locsz3),az3(locsz3),'ro')xlabel('time');
ylabel('az');ptime1 = [100.685;101.31;101.89;102.666;103.198;103.794;104.343;104.918;105.308;105.865;106.536;] ;
ptime2 = [100.885;101.47;102.039;102.589;103.143;103.707;104.281;104.823;105.387;105.952;106.536;]; for i = 1:length(ptime1)-1diff1(1,i)=ptime1(i+1)-ptime1(i);diff2(1,i)=ptime2(i+1)-ptime2(i);
end
2*mean(diff1)
2*mean(diff2)
figure;
plot(ptime1-ptime2);p1=Times2(indxy2(4:end));
p2=Times2(indxz2);for i = 1:length(p1)-1diff1(1,i)=p1(i+1)-p1(i);diff2(1,i)=p2(i+1)-p2(i);
end
5*mean(diff1)
5*mean(diff2)
ay=mean(sqrt(ax3(locsz3).^2 + ay3(locsz3).^2 + az3(locsz3).^2))end
三、仿真结果
从图的仿真结果可知,通过峰值检测和过零检测算法,我们可以得到各个峰值以及过零点值,其具体数值结论如下:
对于峰值时刻,y轴的峰值检测时刻为:100.6850,101.3100,101.8900,102.6660,103.1980,103.7940,104.3430,104.9180,105.3080,105.8650,106.5360。z轴的峰值检测时刻为:100.8850,101.4700,102.0390,102.5890,103.1430,103.7070,104.2810,104.8230,105.3870,105.9520,106.5360。两个轴上峰值的检测时刻误差为: -0.2000,-0.1600,-0.1490,0.0770,0.0550,0.0870,0.0620,0.0950,-0.0790,-0.0870,0。那么由y轴加速度数据和z轴加速度数据,我们分别得到的步伐周期为1.1302s和1.1702s。由此可见,通过y轴和z轴计算的步伐周期之间存在一定的差异性。同理,根据过零点时刻数据,由y轴加速度数据和z轴加速度数据,我们分别得到的步伐周期为1.1091s和1.1629s。由此可见,通过y轴和z轴计算的步伐周期之间存在一定的差异性。
A17-10
基于miu小波变换的人体步态数据检测和识别算法matlab仿真相关推荐
- m基于CNN卷积网络和GEI步态能量图的步态识别算法MATLAB仿真,测试样本采用现实拍摄的场景进行测试,带GUI界面
目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 目前关于步态识别算法研究主要有两种:基于模型的方法和非基于模型的方法.基于模型的步态识别方法优点在于 ...
- m基于AlexNet神经网络和GEI步态能量图的步态识别算法MATLAB仿真
目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhe ...
- m基于CNN卷积神经网络和GEI步态能量图的步态识别算法MATLAB仿真
目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 步态识别是一种新兴的生物特征识别技术,旨在通过人们走路的姿态进行身份识别,与其他的生物识别技术相比, ...
- 【调制识别】基于高阶累积量的调制方式识别算法matlab仿真,课题识别BPSK, QPSK, 16QAM, 64QAM
目录 一.理论基础 二.核心程序 三.仿真测试结果 一.理论基础 由于数字调制信号越来越多地应用于通信信号处理领域,因此对数字信号调制识别的研究也越来越多.传统的调制识别的判决方法有:决策判决法.高阶 ...
- 基于能量检测的调制方式识别算法MATLAB仿真,识别不同SNR下的MFSK和MPSK
UP目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 随着无线通信的快速发展,用户对通信质量的要求越来越高,同时无线设备的大幅度增长,使得频谱资源显得更加重要.认知无线电(Cognitiv ...
- DTMF双音多频系统信号输入和检测识别算法matlab仿真
目录 一.理论基础 二.核心程序 三.仿真结论 一.理论基础 双音多频(Dual Tone Multi Frequency, DTMF)信号是音频电话中的拨号信号,由美国AT&T贝尔公司实验室 ...
- 基于SVM支持向量机的车牌分割识别算法matlab仿真
目录 一.理论基础 二.核心程序 三.仿真测试结果 作者ID :fpga和matlab CSDN主页:https://blog.csdn.net/ccsss22?type=blog 擅长技术: 1.无 ...
- m基于ABC人工蜂群优化的无线传感器网络路由优化算法matlab仿真,对比优化前后网络寿命,效率以及可靠性
目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件 1.算法仿真效果 matlab2022a仿真结果如下: 2.算法涉及理论知识概要 无线传感器网络通常使 ...
- m基于HMM隐性马尔科夫模型的驾驶员驾驶意图识别算法matlab仿真
目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件 1.算法仿真效果 matlab2022a仿真结果如下: 2.算法涉及理论知识概要 随着智能交通系统的发 ...
最新文章
- 教你用 buildroot 构建根文件系统
- 服务器的ras性能指标,Unix服务器6大原则深度讲解
- [Share].NET Reflector Add-Ins
- 计算机ppt制作教案,全国计算机一级B考试基础篇制作人徐守威PPT教案学习.pptx
- 总的来讲safari上面的research gate和canvas会出现奇奇怪怪的bug,但是chrome没问题
- db2分页查询语句优化_数据量很大,分页查询很慢,该怎么优化?
- cass展点不在原位置_cass展点之步骤及方法
- python 爬关键词,Python爬虫实战:爬取微博热搜关键词
- C语言通过网络实现发送文件的一点记录
- ApplicationMaster启动流程
- RedHat Linux RHEL6配置本地YUM源
- 用Python输出100以内的质数
- 串口_波特率计算字节
- 电子发票对报销类saas的影响
- android手机内存单位 吉字节,Android8.1 吉字节问题
- 可一键生成数据分析报告的两个库
- iphonex时间显示蓝色_iphonex左上角时间蓝色
- [poj1797] Heavy Transportation
- 初学GWT-安装GWT
- 2018 天梯赛及蓝桥杯比赛感想
热门文章
- java毕业设计——基于java+Socket+sqlserver的办公自动化系统设计与实现(毕业论文+程序源码)——办公自动化系统
- 全球10大生物技术公司排行表
- 锐龙r7 6800h性能怎么样 相当于什么水平
- [项目] 网易云音乐项目总结
- 3万字长文,PySpark入门级学习教程,框架思维
- 人大金仓助力广东省首届信创职业技能竞赛圆满完成
- 利用CMD命令有效的查病毒***方法
- WEB漏洞-文件上传之后端黑白名单绕过
- 单板硬件设计和软件测试,单板硬件调试与单元测试方案(报告)模板.doc
- 金融知识---------本票,汇票,支票的区别