飞码网-免费源码博客分享网站

点击这里给我发消息

使用MATLAB Mobile从Android设备传感器获取数据

飞码网-免费源码博客分享网站 爱上飞码网—https://www.codefrees.com— 飞码网-matlab-python-C++ 爱上飞码网—https://www.codefrees.com— 飞码网-免费源码博客分享网站
        通过新的MATLAB® Android™传感器支持包,您现在可以使用MATLAB Mobile™从Android设备上的传感器获取数据。这些数据可以发送到计算机上运行的MATLAB会话,以便进一步分析和可视化。

内容

1.什么数据
2.查看传感器数据
3.用MATLAB分析数据
4.例子: 通过捕捉加速度数据来计算步数。
5.动手试试吧!

什么数据?

          在Android设备上,MATLAB Mobile支持从运动传感器(如加速度计)以及位置传感器(如GPS)获取数据。所有传感器的列表如下所示。
MATLAB Mobile中支持的传感器列表
List of Supported Sensors in MATLAB Mobile

查看传感器数据

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

加速度和磁场
Acceleration and Magnetic Field

用MATLAB分析数据

         显示这些数据是很酷的,但要使这些数据真正有用,你将希望进行进一步的分析和处理。Android传感器的MATLAB支持包可以帮助你做到这一点! 它使您能够将传感器数据发送到计算机上的MATLAB会话。要做到这一点。使用 MATLAB 连接器将 MATLAB Mobile 连接到您的计算机。此功能仅在MATLAB R2014a及更高版本上受支持,因此请确保您使用的是兼容版本。安装 Android 传感器的 MATLAB 支持包。从MATLAB工具条中选择 "附加组件",然后选择 "获取硬件支持包"。这将打开支持包安装程序。从列表中选择Android传感器,然后按照说明操作。要在设备上的传感器和MATLAB之间建立通信,请创建一个mobiledev对象,如下所示。
m = mobiledev;

例子:通过捕获加速度数据来计算步数。

        mobiledev对象促进了Android设备上的传感器与计算机上运行的MATLAB会话之间的通信。让我们通过一个例子来探索这个工作流程,这个例子说明了加速度数据的收集和使用它来计算所走的步数。

第1步:打开加速计

       一旦您完成了上节的3个步骤,请进入MATLAB Mobile并打开加速度计。您应该看到类似于这样的东西。
加速度
Acceleration
       您还可以通过执行以下命令,直接从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)');
matlab_mobile_sensors_01
         计算幅度,将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)');
Acceleration Magnitude Plot
       为了消除重力等恒定效应,可以从这些数据中减去平均值。
% Accounting for gravity.
magNoG = mag - mean(mag);

% Plot magnitude.
plot(t, magNoG);
xlabel('Time (s)');
ylabel('Acceleration (m/s^2)');
Acceleration Magnitude Plot (Gravity Removed)
      绘制的数据现在以零为中心,并显示出与行走时所走的步数相对应的峰值。

步骤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;
Acceleration Magnitude Plot (With Peaks)

步骤6:清理

一旦你完成了,确保你关闭了加速度传感器并清除了mobiledev对象。
m.AccelerationSensorEnabled = 0;
clear m;
试试吧!!!
飞码网-免费源码博客分享网站 爱上飞码网—https://www.codefrees.com— 飞码网-matlab-python-C++ 爱上飞码网—https://www.codefrees.com— 飞码网-免费源码博客分享网站
赞 ()
内容页底部广告位3
留言与评论(共有 0 条评论)
   
验证码: