使用 MATLAB 对象属性流式传输传感器数据
此示例说明如何通过 WiFi 或蜂窝连接将移动设备数据流式传输到在 MathWorks® Cloud 上或您的计算机上运行的 MATLAB®。要与移动设备通信并从传感器采集数据,您需要在 MATLAB 中创建 mobiledev
对象。在创建该对象之前,您无法记录传感器数据。
启用传感器数据流式传输
如果出现提示,请登录到您的 MathWorks Cloud。
将设备放置在您要采集传感器数据的位置。
在 MATLAB 中,创建一个
mobiledev
对象m
。m = mobiledev
mobiledev with properties: Connected: 1 Available Cameras: {'back' 'front'} Logging: 0 InitialTimestamp: '' AccelerationSensorEnabled: 1 AngularVelocitySensorEnabled: 1 MagneticSensorEnabled: 1 OrientationSensorEnabled: 1 PositionSensorEnabled: 1 Supported functions
在创建该对象时显示的画面中:
0
- 表示未启用、关闭或传感器在此设备上不可用。1
- 表示启用或打开。
在此示例中,您可以看到设备和
mobiledev
对象已连接,但传感器未启用(所有传感器值均为0
),数据尚未记录(InitialTimestamp
属性为空)。如果您的设备没有某个传感器,则在显示的内容中,该传感器始终为0
。InitialTimestamp
是mobiledev
收到的第一个数据点的时间戳。所有传感器的所有其他时间戳都与InitialTimestamp
相关。启用一个或多个传感器。
m.MagneticSensorEnabled=1
如果您正在使用位置传感器,请在设备的“设置”中打开 MATLAB 的位置访问。
通过启用
mobiledev
对象的Logging
属性,您可以开始记录来自选定传感器的数据。m.Logging = 1
该操作开始传输来自所有选定传感器的数据。
开始记录数据后,请等 1 秒钟以便系统进行数据采集,然后查看对象以了解最新的传感器值。
pause(1) m
mobiledev with properties: Connected: 1 Available Cameras: {'back' 'front'} Logging: 1 InitialTimestamp: '06-08-2014 13:45:56.529' AccelerationSensorEnabled: 1 AngularVelocitySensorEnabled: 1 MagneticSensorEnabled: 1 OrientationSensorEnabled: 1 PositionSensorEnabled: 1 Current Sensor Values: Acceleration: [0.27 0.23 -10.19] (m/s^2) AngularVelocity: [-0.22 0.07 0.06] (rad/s) MagneticField: [3.56 1.56 -48.19] (microtesla) Orientation: [85.91 -27.1 0.35] (degrees) Position Data: Latitude: 41.29 (degrees) Longitude: -72.35 (degrees) Speed: 25 (m/s) Course: 83.6 (degrees) Altitude: 200.1 (m) HorizontalAccuracy: 9.0 (m)
在显示的内容中,您可以看到设备和 Cloud 已连接,现在正在记录数据。此外,还会显示
InitialTimestamp
属性值和传感器值,指示创建对象时的当前测量值。使用
mobiledev
属性控制设备传感器采集。要停止流式传输传感器数据,请重置
Logging
属性或删除mobiledev
对象。clear m
控制传感器采集
MATLABMobile™ 包含一些属性,可用于显示当前传感器值,启用或禁用传感器,打开和关闭日志记录,设置采样率以及显示连接和日志记录状态。
您可以对 mobiledev
对象使用以下属性。
属性 | 描述和值 |
---|---|
Connected | 在 MATLAB 中显示 MATLABMobile 和
|
Logging | 显示和控制从设备到 MATLAB 的数据传输的状态。值包括
要打开或关闭日志记录,请使用以下命令:
|
InitialTimestamp | 第一个数据点从设备传输到
|
SampleRate | 从您的设备采集数据的采样率,以赫兹为单位。该值是双精度值,且必须介于 0 到 100 赫兹之间。默认采样率为 10 赫兹。除设置具体的数值外,您还可以使用字符向量值
|
Acceleration |
加速度是根据 |
AngularVelocity |
角速度是根据 |
Orientation | 当前方向读数的 方向是根据 方位是正 Y 轴和磁场北向之间的角度,其范围在 -180 度和 180 度之间。 正向滚转定义为当设备平放在平面上时正 Z 轴向正 X 轴方向倾斜,其范围在 -180 度和 180 度之间。 正向俯仰定义为当设备平放在平面上时正 Z 轴向正 Y 轴方向倾斜,其范围在 -90 度和 90 度之间。 |
MagneticField |
磁场是根据 |
Latitude | 相对于赤道的当前纬度读数,以度为单位,正值表示赤道以北的纬度。 |
Longitude | 相对于零子午线的当前经度读数,以度为单位,正值表示子午线以东的经度。 |
HorizontalAccuracy | 当前水平精度,定义为围绕经纬度点的圆环半径,以米为单位。 |
Altitude | 高出海平面的当前海拔海拔读数,以米为单位。 |
Course | 相对于正北方向的当前航向读数,以度为单位。 |
Speed | 当前速度读数,单位为 m/s(米/秒)。 |
AccelerationSensorEnabled | 打开或关闭加速度传感器。 要打开或关闭传感器,请使用以下命令:
|
AngularVelocitySensorEnabled | 打开或关闭角速度传感器。 要打开或关闭传感器,请使用以下命令:
|
MagneticSensorEnabled | 打开或关闭磁场传感器。 要打开或关闭传感器,请使用以下命令:
|
OrientationSensorEnabled | 打开或关闭方向传感器。 要打开或关闭传感器,请使用以下命令:
|
PositionSensorEnabled | 打开或关闭位置传感器。 要打开或关闭传感器,请使用以下命令:
|
对象属性
Connected
属性是只读的,在 MATLAB 中显示 MATLAB Mobile 和 mobiledev
对象之间的连接状态。值包括:0
表示未连接,1
表示已连接。
要显示 mobiledev
对象 m
的连接状态,请使用以下命令:
m.Connected
Logging
属性显示从设备到 MATLAB 的数据传输状态。值包括 0
表示不记录,1
表示记录。
要显示日志记录的状态,请对 mobiledev
对象 m
使用以下命令:
m.Logging
Logging
属性还可用于启用和禁用日志记录。要开始记录选定传感器的数据,请启用该属性。
m.Logging = 1
该操作开始传输来自所有选定传感器的数据。您也可以点击 MATLABMobile 中的开始按钮开始传输。
通过禁用 Logging
属性,您可以停止记录来自选定传感器的数据。
m.Logging = 0
此操作将停止传输来自所有选定传感器的数据。您也可以点击 MATLABMobile 中的停止按钮停止传输。
传感器读数属性
使用传感器读数属性显示传感器的当前读数。您可以随时显示正在记录的任何传感器的当前读数。Acceleration
、AngularVelocity
、Orientation
和 MagneticField
属性分别显示其传感器的当前读数。如果位置传感器正在记录数据,您可以使用 Latitude
、Longitude
、Speed
、Course
、Altitude
和 HorizontalAccuracy
属性获取单个位置读数。
要从传感器获取当前值,请使用 <objectname>.<propertyname>
。例如,要获取对象 m
的加速度读数,请使用以下命令:
m.Acceleration
要从位置传感器获取经度读数,请使用以下命令:
m.Longitude
请参阅设备方向,查看 X
、Y
和 Z
轴相对于设备的方位图。
传感器控制属性
MATLABMobile 有五个用于控制传感器的属性。您可以通过选择或取消选择 MATLABMobile 中的传感器按钮来执行相同的操作。每个控制属性包含两个值:1
表示打开或已启用,0
表示关闭或已禁用。
例如,要打开加速度传感器,请使用以下命令:
m.AccelerationSensorEnabled = 1
要关闭加速度传感器,请使用以下命令:
m.AccelerationSensorEnabled = 0
采样率属性
该属性是从您的设备采集数据的采样率,单位为赫兹。该值是双精度值,且必须是介于 0 到 100 赫兹范围内的正数。默认采样率为 10 赫兹。
除设置具体的数值外,您还可以使用字符向量值 'high'
、'medium'
和 'low'
。这些设置使用以下值:
high
:100 赫兹medium
:10 赫兹low
:1 赫兹
即使在开始记录数据后,您也可以更改采样率。例如,要将 mobiledev
对象 m
的采样率更改为特定的值(以赫兹为单位),请使用以下命令:
m.SampleRate = 100
要将采样率更改为字符向量值之一,请使用以下命令:
m.SampleRate = 'low'
从 R2016a 开始,您可以使用字符向量值或指定数值。