如何使用Matlab在移动设备上收集传感器数据
你是否曾经遇到过这样的情况:你正试图建立一个项目,但仍在等待那些甚至没有离开仓库的传感器?那么,有一个解决方案。
你知道吗,你可以用你的智能手机来完成这些任务?智能手机有几个传感器,通过Matlab移动应用程序,你可以使用一些传感器来收集和分析数据。
传感器是使用信号来检测各种条件或物体的电气设备。它们构成了一个涉及传感器的项目的重要组成部分。
本教程将探讨我们如何使用智能手机的传感器收集数据,并将数据用于各种目的。
前提条件
要完成这篇文章,你需要具备以下条件。
- 安装了[Matlab]。
- 对[Matlab]基础知识的正确理解。
- 在你的手机上安装了移动Matlab。
要在你的手机上安装Matlab移动应用程序,请到play store或AppStore搜索Matlab 。
一旦你找到它,点击install ,在你的手机中安装Matlab。
如何使用Matlab手机来拍摄照片
你可以进入相机,手动拍摄图像或视频。这个图像或视频可以在你的程序中用于分析。
要访问相机
- 在您的手机上打开Matlab。
请注意,Matlab手机是在线工作的,你必须有一个互联网连接才能使用它。
- 点击Matlab窗口左上方的三个破折号。

- 点击文件部分。

- 点击右上角的
+符号。 - 点击
Take a photo按钮来拍照。

Matlab移动应用程序上的相机使用起来很简单、很直观。
拍完照片后,它被上传到Matlab驱动器,以同步你的所有文件和数据。图像是以.jpeg 格式上传的,有一个自动生成的名称。
由于你要使用这个图像,你可以把它重命名为有意义的东西。
要重新命名图像,长按它,点击rename ,并给它一个你选择的名字。
给它一个新的名字后,点击ok 。
让我们回到命令窗口,开始编写一些代码。我们将使用imread 函数读取图像,然后使用imshow 函数来查看图像。
I = imread('filename.jpg');
imshow(I)

访问你的图像后,你可以对它做任何你想做的事情。例如,你可以将图像改为灰度,如下图所示。
B = rgb2gray(I);
imshow(B)

正如你所看到的,使用你的移动Matlab来获取图像并进行一些快速的图像处理是很容易的。
此外,你可以把所有的命令写在一个脚本中,这样你就可以在你的移动Matlab或PC上随时使用它们。
要做到这一点,首先点击文件部分的+ 符号,然后点击script 。
这项技术使你有可能在Matlab驱动器的任何地方使用你的命令,在那里你可以同步所有的文件和数据。
一旦你同步了所有的数据,你就可以在你的驱动器上在线访问它。或者,你也可以在你的Matlab驱动器上在线访问数据。

一旦你点击Matlab drive online ,提供你的信息以登录到你的Mathworks账户。成功后,你会在那里找到你的所有文件。
你可以把数据下载到你的电脑里,然后从那里使用它。

使用手机传感器
这些传感器是
- 加速度传感器
- 角速度传感器
- 方向传感器
- 磁场传感器
- 位置传感器
要访问传感器,请进入File 菜单,然后点击Sensors 。当你打开传感器窗口时,你会发现你的手机所提供的各种传感器。
你可以记录所有这些可用的传感器的数据,或者只记录一个传感器,这取决于你想做什么。你可以记录数据并将其保存为.mat 文件,也可以将数据流传到Matlab。
在这个案例中,我们将研究如何记录数据和访问数据。然后我们将使用收集到的数据来计算行驶的距离。
对于数据,我们要收集纬度和经度的信息。
要做到这一点,你将在手机收集数据时四处走动。
要为这个活动设置你的手机,激活位置传感器,点击开始按钮,并开始收集这个数据。

一旦你完成了,点击停止标签,然后保存你的文件。它允许你在你的笔记本电脑或任何其他喜欢的地方使用这些数据。这个数据将被上传到你的Matlab驱动器。
要在你的电脑上使用这些数据,请在Matlab中登录你的Mathworks账户。Matlab驱动器存储了这些数据。一旦你登录了,你就可以很容易地访问它。
另外,你也可以使用前面解释过的方法,即使用Matlab drive online 。
在访问了你的数据之后,你可以使用一种算法来计算所走的距离。在这种情况下,我们将使用哈韦尔辛公式来计算距离。
为了计算,我们首先将数据加载到Matlab中,添加数据路径,然后加载数据,如下图所示。
%% load data acquired by position data
%load position data
addpath('/MATLAB Drive/MobileSensorData')
load sensorlog.mat

然后,我们引入哈韦尔辛公式。这个公式使用纬向和经向位置来计算距离。
纬向和经向位置的单位是度。
这意味着我们需要在使用它们之前将其转换为弧度。另外,在这个公式中,还考虑了地球的半径。
%have haversine formula to calculate distance
latPos = deg2rad(Position.latitude);
lonPos = deg2rad(Position.longitude);
radiusEarth = 6370 ; % in Km
使用矢量化来计算每个时间步长的总距离。
ii = 1:length(latPos)-1;
由于数据很大,首先要对其进行预处理。一旦完成,我们就计算出距离。
% Prepare vector for calculation
lat1 = latPos(ii);
lat2 = latPos(ii+1);
lon1 = lonPos(ii);
lon2 = lonPos(ii+1);
difflat = lat2-lat1;
difflon = lon2 -lon1;
aa = sin(difflat/2).^2 + cos(lat1).*cos(lat2).*sinc(difflon/2).^2;
cc = 2.*atan2(sqrt(aa), sqrt(1-aa));
dd = radiusEarth*cc;
%% Total distance
distMiles = sum(dd)*0.621;
disp(distMiles)
当我们执行整个程序时,我们得到以公里为单位的旅行距离。
当我们在移动Matlab中运行同样的脚本时,我们得到的答案与PC Matlab相似。

这就证明了这些传感器是有效的、准确的。你同样可以使用其余的传感器来收集你的数据。
结论
使用手机的传感器来收集数据很容易。它涉及到在开始收集数据之前激活传感器。
手机传感器是在没有其他传感器的情况下收集数据的有效方法。
此外,它们提供准确的结果,对任何实验都是可靠的。
它们也很容易获得,因为你只需要有移动的Matlab应用程序,你就可以开始收集。