Matlab从移动设备获取加速度数据对步数进行计数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab从移动设备获取加速度数据对步数进行计数相关的知识,希望对你有一定的参考价值。

本文分享如何从 androidios (我的手机是ios)移动设备收集加速度数据,并使用它来对行走步数进行计数。


1、设置移动设备

为了在 MATLAB中从移动设备接收数据,移动设备上安装和设置 MATLAB Mobile™ App。

Matlab从移动设备获取加速度数据对步数进行计数_数据

从 MATLAB Mobile 设置登录到 MathWorks® Cloud。

2、打开传感器

Matlab从移动设备获取加速度数据对步数进行计数_数据_02

设置对应的采样频率、数据输出地址等

Matlab从移动设备获取加速度数据对步数进行计数_数据_03

3、准备数据采集

点击start开始数据采集,人员四处走动记录所有三个轴上生成加速度变化。采集结束后,输入对应的文件名,结果会自动上传到matlab云

Matlab从移动设备获取加速度数据对步数进行计数_移动设备_04

Matlab从移动设备获取加速度数据对步数进行计数_移动设备_05

Matlab从移动设备获取加速度数据对步数进行计数_移动设备_06

4、从matlab云下载数据

云地址:https://drive.matlab.com/files/

Matlab从移动设备获取加速度数据对步数进行计数_移动设备_07

5、检索记录的数据


clc
close all
clear
load(./sensor.mat)
t = Acceleration.Timestamp;
x = Acceleration.X;
y = Acceleration.Y;
z = Acceleration.Z;

6、绘制原始传感器数据

记录的所有三个轴的加速度数据可以一起绘制。


plot(t,a);
legend(X, Y, Z);
xlabel(Relative time (s));
ylabel(Acceleration (m/s^2));

Matlab从移动设备获取加速度数据对步数进行计数_移动设备_08


7、处理原始加速度数据

为了将每个时间点的 XYZ 加速度向量转换为标量值,计算其幅值。这使得无论设备方向如何,都可以检测到整体加速度的较大变化,例如行走步。


x = a(:,1);
y = a(:,2);
z = a(:,3);
mag = sqrt(sum(x.^2 + y.^2 + z.^2, 2));

绘制幅值是为了可视化加速度的总体变化。

plot(t,mag);
xlabel(Time (s));
ylabel(Acceleration (m/s^2));

Matlab从移动设备获取加速度数据对步数进行计数_数据_09

绘图显示加速度幅值不是零均值。从数据中减去均值将消除任何常量影响,如重力。


magNoG = mag - mean(mag);

plot(t,magNoG);
xlabel(Time (s));
ylabel(Acceleration (m/s^2));

Matlab从移动设备获取加速度数据对步数进行计数_移动设备_10

绘制的数据现在以零为中心,清楚地显示加速度幅值的峰值。每个峰值对应一个行走步。

8、对行走步进行计数

​findpeaks​​ 是 Signal Processing Toolbox 提供的一个函数,用于求加速度幅值数据的局部最大值。只有最小高度超过一倍标准差的峰值才被视为一个行走步。此阈值应通过试验来调整,以匹配人行走时移动的水平、地面的硬度等。


minPeakHeight = std(magNoG);

[pks,locs] = findpeaks(magNoG,MINPEAKHEIGHT,minPeakHeight);
# 行走步数即求得的峰值数。
numSteps = numel(pks)

峰值位置可以通过加速度幅值数据可视化。


hold on;
plot(t(locs), pks, r, Marker, v, LineStyle, none);
title(Counting Steps);
xlabel(Time (s));
ylabel(Acceleration Magnitude, No Gravity (m/s^2));
hold off;

Matlab从移动设备获取加速度数据对步数进行计数_数据_11

最后,你学废了吗?学不会后台留言吧,Matlab从移动设备获取加速度数据对步数进行计数_ios_12

‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧


以上是关于Matlab从移动设备获取加速度数据对步数进行计数的主要内容,如果未能解决你的问题,请参考以下文章

iOS获取健康步数从加速计到healthkit

如何获取以前日期的 HealthKit 总步数

如何获取以前日期的 HealthKit 总步数

iOS利用HealthKit框架从健康app中获取步数信息

如何获取Android设备用户移动的速度? Location.getSpeed 可靠吗?

如何提高MATLAB的运算速度