【Matlab】手机内置IMU计步代码(初步)

数据采集方式

利用手机内置传感器,通过手机端matlab进行数据采集并传送到电脑,此为简易版代码,以三轴加速度计为例,数据时间长度最好大于10s。

原理与流程

代码部分

%读取传感器信息
clear
%此处填写传感器数据路径
load('D:\sensorlog_.mat')
t = Acceleration.Timestamp;
x = Acceleration.X;
y = Acceleration.Y;
z = Acceleration.Z;
%画图
plot(t,x,t,y,t,z);
legend('X', 'Y', 'Z');
xlabel('Time (s)');
ylabel('Acceleration (m/s^2)');
title('传感器读取数据')
%%
%三轴数据合一
convert = sqrt(sum(x.^2 + y.^2 + z.^2, 2));
figure
subplot(3,1,1)
plot(t,convert);
xlabel('Time (s)');
ylabel('Acceleration (m/s^2)');
title('三轴数据合一')
%%
%消除重力影响
convert = convert - 9.7;   %静止测量为9.7

subplot(3,1,2)
plot(t,convert);
xlabel('Time (s)');
ylabel('Acceleration (m/s^2)');
title('去重力')
%%
%滤掉0.1-20Hz以外的波,根据数据可进行滤波器范围调整
convert = highpass(convert,0.5,100);
convert = lowpass(convert,5,100);
subplot(3,1,3)
plot(t,convert);
xlabel('Time (s)');
ylabel('Acceleration (m/s^2)');
title('滤掉0.5-5Hz以外的波')
%%
%找出峰值,并统计
%阈值设为0.3,大于0.3才会被统计,根据情况改变
[pks,locs] = findpeaks(convert,'MINPEAKHEIGHT',0.3);
totalsteps = numel(pks)
figure
plot(t,convert);
xlabel('Time (s)');
ylabel('Acceleration (m/s^2)');
hold on;
plot(t(locs), pks, 'r', 'Marker', 'x', 'LineStyle', 'none');
title('步数标记');
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值