此示例显示了如何从Android™或iOS移动设备收集加速数据,并使用它来计算所采用的步骤数。
此示例需要信号处理工具箱™。
为了从Matlab®中的移动设备接收数据,您需要在移动设备上安装和设置MATLAB Mobile™应用程序。
Log in to the MathWorks® Cloud from the MATLAB Mobile Settings.
在命令MATLAB移动的屏幕,使用动员
command to create an object that represents your mobile device.
m= mobiledev;
显示的输出应显示连接:1
,表明动员
对象已成功建立了与应用程序的连接。
在设备上启用加速传感器。
M.AccelerationsEnsorEnabled = 1;
启用传感器后,传感器MATLAB移动设备的屏幕将显示传感器测量的当前数据。这记录
属性允许您开始将传感器数据发送到动员
。
m.logging = 1;
该设备现在正在传输传感器数据。
During logging, the device is held or kept in a pocket while walking around. This generates changes in acceleration across all three axes, regardless of device orientation.
这记录
属性用于再次使设备停止将传感器数据发送到动员
。
m.logging = 0;
Accellog
用于检索XYZ加速度数据和时间戳从设备传输到动员
。
[a,t] = accellog(m);
所有三个轴的记录加速度数据都可以绘制在一起。
plot(t,a); legend('X',,,,'y',,,,'Z');Xlabel(“相对时间)”);ylabel(加速度(M/S^2)');
为了将每个时间点的XYZ加速度向量转换为标量值,计算幅度。这允许整体加速度发生很大变化,例如步行时采取的步骤,无论设备方向如何,都可以检测到。
x = a(:,1);y = a(:,2);z = a(:,3);mag = sqrt(sum(x。^2 + y。^2 + z。^2,2));
绘制大小以可视化加速度的一般变化。
plot(t,mag); xlabel(“时间)”);ylabel(加速度(M/S^2)');
该图表明加速度幅度不是零均值。从数据中减去平均值将消除任何恒定效果,例如重力。
magNoG = mag - mean(mag); plot(t,magNoG); xlabel(“时间)”);ylabel(加速度(M/S^2)');
绘制的数据现在大约为零,并清楚地显示了加速度幅度的峰值。每个峰对应于行走时要采取的步骤。
findpeaks
是信号处理工具箱的函数,用于查找加速度幅度数据的局部最大值。仅将最小高度高于一个标准偏差的峰值视为一步。该阈值应进行实验调整,以符合一个人的行走,地板表面硬度等。
MinPeakHeight = STD(Magnog);[pks,locs] = findpeaks(magnog,'Minpeakheight',Minpeakheight);
采取的步骤数仅仅是发现的峰值。
numsteps = numel(pks)
峰位置可以使用加速度幅度数据可视化。
抓住on;情节(t (loc)s), pks,'r',,,,“标记”,,,,'v',,,,'LineStyle',,,,'没有任何');title('Counting Steps');Xlabel(“时间)”);ylabel(“加速度幅度,无重力(m/s^2)”);抓住离开;
关闭加速传感器并清除动员
。
M.AccelerationsEnsorEnabled = 0;清除m;