matlab数据求加速度,通过从移动设备获取加速度数据对进行计步
設置您的移動設備
為了在 MATLAB? 中接收來自移動設備的數據,您需要在您的移動設備上安裝和設置 MATLAB Mobile? App。
從 MATLAB Mobile 的“設置”登錄到 MathWorks? Cloud。
創建與移動設備的連接
在 MATLAB Mobile 的命令屏幕上,使用 mobiledev 命令創建一個表示您的移動設備的對象。
m = mobiledev;
輸出應顯示 Connected: 1,表明 mobiledev 對象已成功建立與該 App 的連接。
準備數據采集
在設備上啟用加速度傳感器。
m.AccelerationSensorEnabled = 1;
開始獲取數據
啟用傳感器后,MATLAB Mobile 的傳感器屏幕將顯示傳感器測量的當前數據。Logging 屬性允許您開始向 mobiledev 發送傳感器數據。
m.Logging = 1;
該設備現在正在傳輸傳感器數據。
在記錄過程中,當人員四處走動時,設備始終放在衣服口袋中。這將在所有三個軸上生成加速度變化,而與設備方向無關。
停止獲取數據
再次使用 Logging 屬性使設備停止向 mobiledev 發送傳感器數據。
m.Logging = 0;
檢索記錄的數據
accellog 用于檢索從設備傳輸到 mobiledev 的 XYZ 加速度數據和時間戳。
[a,t] = accellog(m);
繪制原始傳感器數據
可以同時繪制記錄的所有三個軸的加速度數據。
plot(t,a);
legend('X', 'Y', 'Z');
xlabel('Relative time (s)');
ylabel('Acceleration (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('Time (s)');
ylabel('Acceleration (m/s^2)');
繪圖顯示加速度幅值不是零均值。從數據中減去均值將消除任何常量影響,如重力。
magNoG = mag - mean(mag);
plot(t,magNoG);
xlabel('Time (s)');
ylabel('Acceleration (m/s^2)');
繪制的數據現在以零為中心,清楚地顯示加速度幅值的峰值。每個峰值對應一個行走步。
對行走步進行計數
findpeaks 是 Signal Processing Toolbox 提供的一個函數,用于求加速度幅值數據的局部最大值。只有最小高度超過一個標準差的峰值才被視為一個行走步。此閾值應通過試驗來調整,以匹配人行走時移動的程度、地面的硬度等。
minPeakHeight = std(magNoG);
[pks,locs] = findpeaks(magNoG,'MINPEAKHEIGHT',minPeakHeight);
行走步數即求得的峰值數。
numSteps = numel(pks)
峰值位置可以通過加速度幅值數據進行可視化。
hold on;
plot(t(locs), pks, 'r', 'Marker', 'v', 'LineStyle', 'none');
title('Counting Steps');
xlabel('Time (s)');
ylabel('Acceleration Magnitude, No Gravity (m/s^2)');
hold off;
清理
關閉加速度傳感器并清理 mobiledev。
m.AccelerationSensorEnabled = 0;
clear m;
總結
以上是生活随笔為你收集整理的matlab数据求加速度,通过从移动设备获取加速度数据对进行计步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 10.2.0.4 rac
- 下一篇: linux 变量替换字符串,变量替换 字