日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

智能手机计步算法c语言实现,【转载】智能手机计步器算法的实现

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 智能手机计步算法c语言实现,【转载】智能手机计步器算法的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在的智能手機嵌入了一些微小的傳感器,比如重力傳感器、光傳感器、聲音傳感器等。如何有效地利用這些傳感器來開發一些應用,是一個值得深入研究的課題。比

如開發醫療健康的應用、運動量監視器等。本文采用htc Touch Pro

智能手機的重力傳感器來開發一款監視步數的程序,程序的關鍵在于計步模型的建立。由于程序算法還存在一定的問題,在本文最后的“存在問題”給出。如有問題請不吝指出。

智能手機

謂的智能手機是指,具有獨立的操作系統,用戶可以自行安裝第三方應用軟件,通過此類程序來對手機的功能進行擴充,并可以通過移動通訊網絡來實現無線網絡接

入的手機,它實際上就是一臺迷你的個人電腦。智能手機的操作系統主要有:Windows Mobile, iPhone,

BlackBerry, Linux等。

步數識別系統

步數識別系統是指運行在移動手機上,能夠監視用戶走了多少步的應用程序。它一般由以下3個部分構成:

· 傳感器模塊,用來采集傳感器數據;

· 特征提取模塊,處理和分析原始數據,并進行特征提取、建立模型;

· 步數識別模塊,把所提取的特征用來識別步數。

硬件設備

力傳感器(G-Sensor)又稱為加速度傳感器,用來感知加速度的變化,它使用三維方向的加速度分量來表示。G-Sensor被用在很多智能設備當中,

比如IBM的高端筆記本電腦內置了G-Sensor,在發生劇烈的拉動時(如跌落),立即啟動硬盤保護,避免硬盤損害。再如Apple 的

iPhone

使用G-Sensor來感知手機屏幕的方向,當在觀看視頻時手機橫放,屏幕自動跟著旋轉,這使得用戶體驗大大增加。本文采用htc Touch

Pro手機上的G-Sensor,同樣也適用于htc 其它型號的G-Sensor。

方案實現

常生活當中,人們使用手機一般是拿在手上,放在褲兜里,女士也經常把它放在包里。因為手機外界環境總是很復雜的,褲兜有松有緊,放在松褲兜的手機比放在緊

的更容易抖動,產生的噪音也更多。為了使該算法盡可能的適用于不同的應用環境,需要對大部分的使用環境進行測試。首先,由4個人(8個或更多也可以)各自

對不同手機使用環境進行數據收集,因為人們在同樣的場合使用手機的習慣是不一樣的。其次,對采集來的這些數據分別進行特征提取。最后,使用提取的特征模型

進行識別檢驗。

數據采集

htc Touch Pro G-Sensor提供的數據如表1所示。

表1. htc Touch Pro G-Sensor 提供的數據

字段

含義

X

加速度在手機坐標X方向的分量大小,類型為 double

Y

加速度在手機坐標Y方向的分量大小,類型為double

Z

加速度在手機坐標Y方向的分量大小,類型為double

Length

加速度大小,值為,類型為double

Xangle

加速度在手機坐標X方向的分量與地平面的夾角,范圍為 -180°~180°,類型為 int

Yangle

加速度在手機坐標Y方向的分量與地平面的夾角,范圍為 -180°~180°,類型為 int

DateTime

采樣的時間,不是G-Sensor提供的,為了方便算法計算保留采樣的時間,類型為double

文算法采用的采樣頻率為20HZ,采樣環境有:慢走、快走、跑步、騎自行車、坐的士、坐公交、坐電梯(上/下)、坐地鐵、上下樓梯。其中,有走路的采集走

100

步的數據(慢走、快走等),不是走路的采集1分鐘的數據。由于開始和結束的時候放置手機(放口袋、包里)會有一些波動,不是我們想要的,因此這兩個時間段

的數據可以刪去,或不考慮。手機放在口袋,收集的原始Length字段數據,在Excel

2007上繪制波形圖如圖1。橫軸為每個采樣點的索引,縱軸為Length值大小,也就是加速度大小,值在9.8附近變化。

圖 1. Length字段波形圖

特征提取

由于收集的數據包含有噪聲,特別是在兩個動作切換之間Length字段值的波動比較大,比如慢走和上樓梯的過程。這里使用快速傅里葉變換(FFT)來處理Length字段的數據,波形圖如圖2。縱軸已向下平移9.8。

圖 2. 經過FFT處理的Length字段波形圖

們發現上面經過FFT處理的波形表現出一定的規則,就是在一定的時間間格內總有一個波谷,我們稱這個點為“踩點”(如圖3中的1、2、3、4點),也就是

加速度最小的時刻(腳往下踩,手機相對有一個往下“掉”的過程)。另外,圖3上A點也是波谷,但這一點是一個波動點,需要排除。所以踩點還必須小于一定的

值-Threshold。當腳抬起來的時候(“起點”),身體對手機的作用力會增大,加速度也增大。所以起點必須大于Threshold,大于

Threshold的都稱為起點,因為我們只關心狀態的變化。通常地,走路的時候步與步之間的有一定的時間間隔,走快些間隔小,走慢些間隔大。如果是跑的

話,人類的極限是1秒種跑5步,也就是1步0.2秒。從起點到踩點狀態變化1次就是走了1步。所以,我們建立包含如下2個要素的模型M:

1. Length滿足一定閥值,比如 –Threshold < Length

< Threshold

2. 兩個連續踩點的時間間隔必須在Timespan (200~2000毫秒)之內

圖 3. 模型滿足的條件

步數識別

我們把建立的模型用來檢驗在坐的士環境下所采集的數據,波形圖如圖4.

圖 4. 用模型檢驗的士環境下的數據

們可以看到后面的一段時間是比較平穩的,前面有一些波動,這些波動導致了錯誤的識別,識別為走路。我們可以改進這個模型,增加一個約束條件:在監視了連續

k(比如3)個踩點后才開始計步,所以從圖3上標號為4的點開始計步。這樣的約束就可以把大部分的抖動給去掉。把最終的模型用來檢驗所采集的不同環境下的

數據得到的計步結果還是比較準確的。

存在問題

如 果拿著手機左右搖擺,采集的數據經過FFT

處理后的波形也符合上面的模型,但這并不是走路的狀態,產生了錯誤的計步。直覺上認為這可以通過監視Xangle,Yangle

兩個字段(在某一范圍來回變化)來預防這種情況的發生。但使用htc G-Sensor采集的這兩個字段的數據得到的效果并不好。

經驗教訓

以 上模型使用的數據只有Length字段,其它字段并沒有用到。實際上,在決定只使用 Length

字段建立模型之前,有嘗試使用Xangle,Yangle,并推導出Zangle(htc

G-Sensor沒有給出這個字段),使用這三個角度的狀態變化來輔助判斷計步。事實上這三個量的數值并不可靠,比如把手機水平放置,做左右搖擺,得到的

Xangle,Yangle 的范圍變化有超過 30°的。另外,也可以嘗試使用Samsung,iPhone

上的G-Sensor,但本文并沒有實現該想法。

總結

使

用智能手機來計步這個課題比較新穎,而且很容易實現個人健康監視的手機助理。收集不同使用環境下的數據是一個比較耗時的過程,需要由不同的人員在不同的環

境下收集。整個計步的關鍵過程在于模型的建立,而且必須滿足使用手機的任意性和處理不同環境下的噪聲。所使用的算法也比較簡單,用FFT

來處理原始數據,設立一定的閥值和時間間隔,然后監視過程的變化(踩點->起點->踩點)。其中采樣率、Length閥值和時間間隔等參數的

設置也是需要一個一個調試的,在本文的程序里采樣率為20HZ,Threshold取1,時間間隔在200~2000毫秒。

總結

以上是生活随笔為你收集整理的智能手机计步算法c语言实现,【转载】智能手机计步器算法的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。