内容
1.什么数据2.查看传感器数据
3.用MATLAB分析数据
4.例子: 通过捕捉加速度数据来计算步数。
5.动手试试吧!
什么数据?
在Android设备上,MATLAB Mobile支持从运动传感器(如加速度计)以及位置传感器(如GPS)获取数据。所有传感器的列表如下所示。MATLAB Mobile中支持的传感器列表

查看传感器数据
您可以从MATLAB Mobile的下拉菜单中选择 "传感器 "选项来访问这些传感器。您可以点击传感器来启用它并查看相关的测量结果。下面的截图是打开加速度计和磁力计的结果。加速度和磁场

用MATLAB分析数据
显示这些数据是很酷的,但要使这些数据真正有用,你将希望进行进一步的分析和处理。Android传感器的MATLAB支持包可以帮助你做到这一点! 它使您能够将传感器数据发送到计算机上的MATLAB会话。要做到这一点。使用 MATLAB 连接器将 MATLAB Mobile 连接到您的计算机。此功能仅在MATLAB R2014a及更高版本上受支持,因此请确保您使用的是兼容版本。安装 Android 传感器的 MATLAB 支持包。从MATLAB工具条中选择 "附加组件",然后选择 "获取硬件支持包"。这将打开支持包安装程序。从列表中选择Android传感器,然后按照说明操作。要在设备上的传感器和MATLAB之间建立通信,请创建一个mobiledev对象,如下所示。
m = mobiledev;
例子:通过捕获加速度数据来计算步数。
mobiledev对象促进了Android设备上的传感器与计算机上运行的MATLAB会话之间的通信。让我们通过一个例子来探索这个工作流程,这个例子说明了加速度数据的收集和使用它来计算所走的步数。第1步:打开加速计
一旦您完成了上节的3个步骤,请进入MATLAB Mobile并打开加速度计。您应该看到类似于这样的东西。加速度

您还可以通过执行以下命令,直接从MATLAB启用传感器。
m.AccelerationSensorEnabled = 1;
步骤2:将数据发送到MATLAB
你注意到屏幕底部的开始发送按钮了吗?点击它,然后就可以了!您现在正在向MATLAB发送数据。您现在正在向MATLAB发送数据。或者,你可以直接从MATLAB开始发送数据,通过以下命令。
m.Logging = 1;
你可以在MATLAB中进行验证,注意结果中的当前传感器值。
m
m = mobiledev with properties: Connected: 1 Logging: 1 InitialTimestamp: '02-Oct-2014 21:53:26.707' AccelerationSensorEnabled: 1 (20 Logged values) AngularVelocitySensorEnabled: 0 MagneticSensorEnabled: 0 OrientationSensorEnabled: 0 PositionSensorEnabled: 0 Current Sensor Values: Acceleration: [0.2631 5.9226 8.1850] (m/s^2)
步骤3:停止获取数据并检索日志
用你的设备在你的校园/家庭/地板上走走。一旦你满意,就停止向MATLAB发送这些数据。您可以在MATLAB Mobile上点击 "停止发送 "按钮,或者在MATLAB中发出以下命令。
m.Logging = 0;
要检索数据,使用accellog变量。
[a, t] = accellog(m);
步骤4:绘制原始传感器数据
一旦检索到记录的加速度数据,就可以在MATLAB中进行绘制。
plot(t, a);
legend('X', 'Y', 'Z');
xlabel('Relative time (s)');
ylabel('Acceleration (m/s^2)');

计算幅度,将X、Y和Z向量转换为标量值。然后,绘制它。
x = a(:,1);
y = a(:,2);
z = a(:,3);
% Calculate and plot magnitude.
mag = sqrt(sum(x.^2 + y.^2 + z.^2, 2));
plot(t, mag);
xlabel('Time (s)');
ylabel('Acceleration (m/s^2)');

为了消除重力等恒定效应,可以从这些数据中减去平均值。
% Accounting for gravity.
magNoG = mag - mean(mag);
% Plot magnitude.
plot(t, magNoG);
xlabel('Time (s)');
ylabel('Acceleration (m/s^2)');

绘制的数据现在以零为中心,并显示出与行走时所走的步数相对应的峰值。
步骤5:计算所走的步数。
要确定步数,可以使用信号处理工具箱中的FINDPEAKS函数。在本例中,我们只将最小高度超过一个标准差的峰值作为一个台阶。这个阈值应该通过实验来调整,以匹配人在行走时的运动水平、地板表面的硬度等。
% Use FINDPEAKS to determine the local maxima.
minPeakHeight = std(magNoG);
[pks, locs] = findpeaks(magNoG, 'MINPEAKHEIGHT', minPeakHeight);
所采取的步数就是峰值的数量。
numSteps = numel(pks)
numSteps = 15 最后,你还可以在加速度大小数据图上找出这些位置。
hold on;
% Place a red marker on the locations that correspond to peaks.
plot(t(locs), pks, 'r', 'Marker', 'v', 'LineStyle', 'none');
title('Counting Steps');
xlabel('Time (s)');
ylabel('Acceleration Magnitude, Gravity Removed (m/s^2)');
hold off;

步骤6:清理
一旦你完成了,确保你关闭了加速度传感器并清除了mobiledev对象。
m.AccelerationSensorEnabled = 0;
clear m;
试试吧!!!