首页 > 其他分享 >Matlab从移动设备获取加速度数据对步数进行计数

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

时间:2022-10-19 21:33:34浏览次数:62  
标签:Acceleration 幅值 计数 Matlab 行走 ylabel 加速度 数据 步数

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


1、设置移动设备

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

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

从 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从移动设备获取加速度数据对步数进行计数_ios_11

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

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


标签:Acceleration,幅值,计数,Matlab,行走,ylabel,加速度,数据,步数
From: https://blog.51cto.com/domi/5768561

相关文章

  • Matlab 多项式的根求解
    分享一下通过多种不同的方法计算多项式的根。数值根使用代换法求根特定区间内的根符号根数值根​​roots​​ 函数用于计算系数向量表示的单变量多项式的根。例如,创建一个......
  • 基于LDPC编译码的长距离SC-OFDM通信链路matlab仿真
    目录一、理论基础二、MATLAB仿真程序三、仿真结果一、理论基础VPI光通信系统模拟软件支持灵活的多速率传输系统,通过这个软件,用户可以从基本的光子元素向上层建立模型,......
  • 粒子群优化算法-Python版本和Matlab函数调用
    前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab下的粒子群函数。前文参看:​​粒子群优化算法(PSO)​​以Ras函数(Rastrigin's......
  • GPS载波同步MATLAB仿真
     %载波跟踪算法仿真clcclearclf%输入信号参数定义fd=2.45e+3;f_ref=4.092e+6;fi=(4.092e+6)+fd;fs=16.368e+6;Ts=1/fs;N=16368;Repeat_Num=0.5000e+4;Freq_Step=500;......
  • Matlab学习笔记(03)——三种循环语句的用法(for、switch、while)
    为了减轻循环计算的步骤,三种循环语句可以根据所需要的方法进行选择。 for循环格式:fori=1:10a=1+i;end这个格式可以用于求的1到10的总和 switch循环......
  • MATLAB的集成环境及数据类型
    第一部分MATLAB的集成环境一.菜单栏和工具栏介绍 MATLAB包括7个菜单项:【File】:用于进行与文件的处理【Edit】:用于实现命令窗口的编辑操作【Debug】:用来调试程序【Parallel】......
  • MATLAB如何对矩阵进行求和?sum(A,1) sum(A,2)
    sum(A,1)对列中的连续元素进行操作,并返回每列总和的行向量。sum(A,2)对行中的连续元素进行操作,并返回每行总和的列向量。......
  • 1024 科学计数法(JAVA)
    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]​​.​​[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字......
  • 基于MAX-SUM算法的大规模信息系统的协调问题matlab仿真
    一、理论基础二、核心程序三、仿真测试结果作者ID:fpga和matlabCSDN主页:https://blog.csdn.net/ccsss22?type=blog擅长技术:1.无线基带,无线图传,编解码2.机器视觉,图像......
  • 分别使用BP/RBF/GRNN神经网络识别航迹异常matlab仿真
    一、理论基础1.1基于BP神经网络的识别1.2基于RBF神经网络的识别1.3基于GRNN神经网络的识别二、核心程序三、仿真测试结果作者ID:fpga和matlabCSDN主页:https://blog.c......