
時域特征把一段波形壓縮成少量數字。均值描述基線RMS描述總體能量峰峰值描述幅度范圍峭度對尖銳沖擊更敏感。特征名稱熟悉并不代表它一定適合當前任務。有效特征應在類別之間形成穩定差異并在設備、溫度和時間變化下保持可重復。計算量、數值穩定性和PC/MCU一致性也要進入選擇。特征的價值由區分度、穩定性和計算成本共同決定公式本身不能證明它有用。完成本篇后你應該能夠解釋均值、方差、RMS、峰峰值、偏度、峰度和相關系數描述的信號屬性。識別對毛刺、量程和窗口長度敏感的特征。一次遍歷提取多項特征并用合成窗口檢查每個特征的方向是否符合預期。時域特征直接在采樣值上計算不需要FFT。它們適合幅值、能量、沖擊和通道關系能夠區分類別的任務。一、位置、離散程度與能量均值反映窗口的平均水平適合觀察零偏或直流分量方差和標準差反映數據圍繞均值的離散程度RMS不先去均值能夠反映含直流分量的整體能量。是否去均值取決于任務。姿態識別需要利用重力方向時盲目中心化會刪除有效信息純振動分析可能更關心交流分量。均值 μ (1/N)Σx?RMS √[(1/N)Σx?2]方差 σ2 (1/N)Σ(x? ? μ)2圖1不同統計特征強調波形的不同屬性二、極值與高階特征對異常更敏感最大值、最小值和峰峰值能夠捕捉幅值范圍但容易被單個毛刺影響。偏度描述分布不對稱峭度反映尾部和尖峰程度適合沖擊類任務也對噪聲和樣本長度敏感。高階矩計算前要檢查數值范圍。定點實現需要避免累加溢出浮點實現也應處理方差接近零的窗口。表1常見時域特征的含義與風險特征主要含義注意事項均值基線或直流分量去均值會刪除該信息RMS總體能量受直流偏置影響峰峰值幅值范圍對毛刺敏感峭度尖峰與重尾短窗口和噪聲下波動大過零率符號變化頻率閾值和偏置會改變結果三、相關性與跨通道特征補充方向信息六軸IMU各通道并非獨立。軸間相關系數、合加速度和角速度模長能夠描述方向耦合與整體運動強度但也會增加計算和輸入維度。特征數量增加會擴大模型參數并提高過擬合風險。可以用相關矩陣、單特征分布和消融實驗刪除重復或不穩定特征。四、板端實現要保證一次遍歷和可驗證均值、平方和、極值和過零次數可以在一次遍歷中累計減少內存訪問。統計結果應與Python參考實現使用相同分母、數據類型和邊界約定。對每個特征設置單元測試包含全零、常數、正弦、沖擊和極值輸入。這樣能夠在模型調試前排除特征實現錯誤。C一次遍歷計算均值、RMS和峰峰值void basic_features(const float *x, size_t n,float *mean, float *rms, float *ptp){double sum 0.0, sum_sq 0.0;float min_v x[0], max_v x[0];for (size_t i 0; i n; i) {sum x[i];sum_sq (double)x[i] * x[i];if (x[i] min_v) min_v x[i];if (x[i] max_v) max_v x[i];}*mean (float)(sum / n);*rms sqrtf((float)(sum_sq / n));*ptp max_v - min_v;}同一段數據可以從位置、能量和形狀三個層面描述均值描述基線位置標準差描述圍繞均值的波動RMS描述相對零點的能量。信號存在直流偏置時RMS同時包含偏置和變化若只關心交流振動可先去均值再計算標準差或交流RMS。峰值和峰峰值關注極端幅度對沖擊敏感也容易被單個毛刺影響。峰度用于描述分布尖銳程度沖擊信號常出現較高峰度但樣本少時估計不穩定。每個特征都要和數據質量規則一起使用。過零率描述符號變化頻繁程度粗略反映頻率與噪聲。若信號有較大零偏它可能幾乎不穿過零點。可以先去均值或使用相對局部基線的過零但訓練與部署必須一致。RMS sqrt(sum(x2)/N)方差 sum((x-mean)2)/N峰峰值 max(x)-min(x)多通道任務還需要描述軸之間的關系兩軸相關系數接近1表示同向變化接近-1表示反向變化接近0表示線性關系弱。六軸IMU中的軸間關系可以表達旋轉方向和機械耦合。相關系數計算前要去均值并處理某一軸方差接近0的情況。模長 sqrt(x2y2z2) 對坐標旋轉更穩定卻失去方向。固定安裝的故障診斷可能需要方向信息穿戴式任意姿態可能受益于模長。可以同時保留每軸特征與模長特征再通過消融實驗判斷貢獻。MCU實現應復用一次遍歷中的累加量sum、sum_sq、min和max。累加位寬要根據最大輸入和窗口長度計算INT16平方后至少需要更寬類型。浮點實現簡單定點實現要明確縮放和溢出。常用時域特征與敏感因素特征主要描述容易受影響均值基線與零偏漂移、安裝方向RMS/方差能量與波動量程、窗口長度峰峰值/峰度沖擊與極端毛刺、樣本數相關系數通道協同低方差與時間錯位動手讓四類信號在時域特征上顯形腳本生成靜止偏置、平穩正弦、強隨機噪聲和帶沖擊正弦四類窗口計算均值、RMS、標準差、峰峰值、過零率和峰度。目標是先根據物理含義預測方向再用數字驗證。實驗環境與輸入Python 3標準庫。保存為 time_features.py 并運行。隨機數種子固定輸出可重復。按順序完成實驗運行前先預測哪類均值最高、哪類峰峰值最大、哪類峰度最高。運行代碼并逐項核對預測。向所有信號增加0.5偏置觀察RMS、均值和過零率變化。刪除沖擊點驗證峰度和峰峰值為何明顯下降。可直接運行六個時域特征的完整實現import mathimport randomrandom.seed(15)N 200signals {bias: [0.6 random.gauss(0, 0.01) for _ in range(N)],sine: [0.4*math.sin(2*math.pi*8*n/200) for n in range(N)],noise: [random.gauss(0, 0.4) for _ in range(N)],impact: [0.3*math.sin(2*math.pi*8*n/200) (2.5 if n 90 else 0.0) for n in range(N)],}def extract(x):mean sum(x) / len(x)centered [v - mean for v in x]variance sum(v*v for v in centered) / len(x)rms math.sqrt(sum(v*v for v in x) / len(x))p2p max(x) - min(x)zcr sum((a 0) ! (b 0) for a, b in zip(x, x[1:]))/(len(x)-1)fourth sum(v**4 for v in centered) / len(x)kurtosis fourth / (variance*variance) if variance 1e-12 else 0.0return mean, rms, math.sqrt(variance), p2p, zcr, kurtosisprint(name mean rms std p2p zcr kurtosis)for name, values in signals.items():f extract(values)print(f{name:8s} .join(f{v:7.3f} for v in f))先讀懂代碼中的關鍵路徑均值與RMS使用原值標準差和峰度使用去均值值兩者回答不同問題。峰度分母是方差平方方差接近0時必須保護避免NaN進入模型。過零率按相鄰點符號變化計數加入直流偏置會明顯改變它。固定信號類型幫助先預測特征方向再用輸出檢查公式實現。你應該觀察到什么bias信號均值接近0.6但標準差很小說明RMS大不一定代表強振動。impact信號的峰峰值與峰度明顯上升反映少量極端點。noise信號過零率通常高于低頻正弦但具體數字受隨機樣本影響。成功標準你能從任務的物理差異出發選擇特征而非機械收集所有統計量。每個特征在PC與MCU上使用相同定義、除數和邊界處理。板端實現檢查累加位寬、除零、NaN和異常輸入。失敗時從哪里查起時域特征異常值的來源現象可能原因處理RMS遠大于預期存在直流偏置或單位錯誤同時查看均值和物理范圍峰度非常不穩定窗口太短或毛刺未處理擴大樣本并保留質量標志相關系數出現NaN某軸方差接近0設置最小方差保護特征測試應包含容易手算的常量、正弦和單脈沖輸入這比只拿真實復雜波形更容易發現實現錯誤。把實驗遷移到真實MCU項目一次遍歷可以累加sum、sum_sq、min、max和過零數減少內存訪問。峰度需要更高階累加先確認任務是否真的受益。INT16平方和可能溢出32位。用窗口長度和最大碼推導上界選擇int64或縮放最后與Python黃金結果比較。特征量綱也要記錄。均值和RMS繼承輸入單位方差是單位平方相關系數無量綱。把不同量綱特征直接送入Dense前通常需要基于訓練集的縮放并在MCU復現。特征定義改變后應提升預處理版本即使模型shape不變舊權重也需要重新驗證。把結果再向前推進一步為INT16輸入、N1024計算sum_sq所需的最小安全累加位寬。構造兩個相關系數接近1和-1的軸信號并驗證實現。挑選不超過8個特征形成最小基線記錄每個特征的物理含義。收束時域特征是帶有物理含義的數據壓縮。通過類別區分度、跨設備穩定性和MCU成本驗證后再保留避免堆疊無效統計量。