<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 如何在低算力MCU平臺上優(yōu)雅的計算均值和方差

如何在低算力MCU平臺上優(yōu)雅的計算均值和方差

作者:Alex Yang 時(shí)間:2025-03-07 來(lái)源:恩智浦MCU加油站 收藏

一維數據的均值和方差計算可以說(shuō)是幾乎是最常用的統計分析方法。這個(gè)初中就學(xué)過(guò)的概念,在嵌入式系統中卻有著(zhù)廣泛的實(shí)際應用:

本文引用地址:http://dyxdggzs.com/article/202503/467787.htm

■ 傳感器故障檢測

□ 正常工作的傳感器數據波動(dòng)應在一定范圍內

□ 突然的均值漂移或方差劇變,往往意味著(zhù)傳感器故障

□ 如溫度傳感器讀數突然劇烈波動(dòng),很可能是接觸不良 

信號質(zhì)量評估 

□ GPS信號強度的均值和方差可以反映定位質(zhì)量 

□ 方差過(guò)大說(shuō)明信號不穩定,可能處于多路徑效應區域

□ 均值過(guò)低說(shuō)明信號較弱,可能在遮擋環(huán)境下

■ 機器人控制

□ 舵機位置反饋的方差可以用來(lái)檢測是否卡死

□ 電機電流的均值可以估計負載大小

□ 輪速反饋的方差可以判斷地面情況

■ 電池管理

□ 電壓的滑動(dòng)均值可以平滑瞬時(shí)波動(dòng)

□ 電流的方差可以反映負載的穩定性

□ 溫度的異常波動(dòng)可能預示電池問(wèn)題

這些場(chǎng)景都需要實(shí)時(shí)、高效地計算數據流的統計特征。雖然計算公式簡(jiǎn)單,但在實(shí)際工程中,有限的資源限制及實(shí)時(shí)性要求、數值穩定性和存儲效率成為主要挑戰。

本文主要探討如何在有限的計算能力和內存條件下,優(yōu)雅地實(shí)現高效的均值和方差計算。通過(guò)優(yōu)化、減少計算復雜度、利用遞推公式和定點(diǎn)數運算,文章提供了一系列使用技巧,幫忙開(kāi)發(fā)者在保持精度的同時(shí),顯著(zhù)降低計算開(kāi)銷(xiāo)。這些方法特別適用于物聯(lián)網(wǎng)設備、嵌入式系統等對資源敏感的領(lǐng)域。

基礎知識

1.1 定義 

眾所周知: 均值(mean)反映數據的集中趨勢:

圖片

方差(variance)反映數據的離散程度:

圖片

基于以上兩個(gè)定義式出發(fā),可以很簡(jiǎn)單的轉換為C code, 淺顯易懂: 

圖片

使用示例:

圖片

但是這種最基礎的實(shí)現存在幾個(gè)嚴重問(wèn)題: 

1) 數據存儲問(wèn)題 

● 需要保存全部歷史數據

● 對于高頻采樣的傳感器(如IMU 200Hz),1s就需要存儲200個(gè)數據點(diǎn)

● 在嵌入式系統中,內存資源寶貴,這種方式極其浪費

2)計算效率問(wèn)題 

● 每次計算都需要遍歷全部數據,時(shí)間復雜度為O(n)

● 對于實(shí)時(shí)系統,隨著(zhù)數據量增加,計算延遲會(huì )越來(lái)越大

● 不適合需要快速響應的實(shí)時(shí)控制系統

3)數值穩定性問(wèn)題 

● 直接累加可能導致數值溢出

● 對于很大或很小的數據,浮點(diǎn)數精度損失明顯

● 特別是在計算方差時(shí),(Xi-u)的計算可能產(chǎn)生很大的舍入誤差

4)實(shí)時(shí)性問(wèn)題

● 無(wú)法進(jìn)行增量計算

● 新數據到來(lái)時(shí)需要重新計算所有統計量

● 不適合流數據處理

在線(xiàn)(Online Algorithm)

在線(xiàn)方法也叫做流式方法, 針對批量方法的缺點(diǎn),在線(xiàn)方法不需要保存歷史數據,在線(xiàn)中比較經(jīng)典的是 算法。

算法是由B.P. 在1962年提出的一種在線(xiàn)計算均值和方差的算法。它的核心思想是:每來(lái)一個(gè)新數據,就遞增地更新均值和方差,而不需要存儲所有歷史數據。

2.1 Welford算法 

這是一種數值穩定的在線(xiàn)算法,特別適合處理數據流。Welford算法的核心是遞推公式的推導。設第n個(gè)數據到來(lái)時(shí):

1) 均值更新

圖片

2) 方差更新:

圖片

3) 關(guān)鍵推導步驟:

圖片

2.2 Welford算法實(shí)現2.2.1 核心結構和函數 

圖片

圖片

 2.2.2 使用示例 

圖片

 2.2.3 算法步驟解釋

1) 每次新數據到來(lái):

● 計數加1

● 計算新數據與當前均值的差

● 更新均值

● 更新M2(用于方差計算)

2) 方差計算:

● 直接用M2除以樣本數

● 樣本數小于2時(shí)返回0

算法對比小結

本文介紹了Welford方差計算方法,它是一種在線(xiàn)、一次遍歷的方差計算算法,能在不存儲所有樣本的情況下,逐步計算所有樣本的方差。與傳統的方差計算方法相比,Welford方法在降低訪(fǎng)存次數的同時(shí),也做到了數值計算的穩定性。因此,Welford方法更適合處理海量數據,也更適合在高性能計算環(huán)境中使用。

事實(shí)上,Welford算法啟發(fā)了 NVIDIA 在2018年提出的Online Softmax算法,該算法降低了Softmax計算的訪(fǎng)存次數,提高了計算性能。而Online Softmax則直接啟發(fā)了FlashAttention,后者已經(jīng)成為支撐當前最流行的Transformer架構的最核心的計算優(yōu)化手段。

圖片



關(guān)鍵詞: Welford 算法

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>