Desidero filtrare i valori dell'accelerometro utilizzando una media mobile, come è fatto? GrazieCome si usa una media mobile per filtrare i valori dell'accelerometro in iPhone OS
risposta
Un filtro IIR semplice, unipolare, passa-basso, ricorsivo è rapido e facile da implementare, ad es.
xf = k * xf + (1.0 - k) * x;
yf = k * yf + (1.0 - k) * y;
dove x, y sono grezzo (non filtrato) X/segnali accelerometrici Y, xf, yf sono i segnali di uscita filtrati, e k determina la costante di tempo dei filtri (tipicamente un valore compreso tra 0,9 e 0.9999. .., dove un k più grande significa una costante di tempo più lunga).
È possibile determinare k
empiricamente, o se si conosce la frequenza richiesta cut-off, Fc
, quindi è possibile utilizzare la formula:
k = 1 - exp(-2.0 * PI * Fc/Fs)
dove Fs
è la frequenza di campionamento.
Si noti che xf, yf sono i valori precedenti del segnale di uscita sull'RHS e i nuovi valori di uscita sull'LHS dell'espressione sopra.
Si noti inoltre che stiamo assumendo qui che si campioneranno i segnali dell'accelerometro a intervalli di tempo regolari, ad es. ogni 10 ms. La costante di tempo sarà una funzione sia di k che di questo intervallo di campionamento.
così xey sono l'accelerometro.x e l'accelerometro.y, io sono confuso, non so cosa sia il 'segnale di ingresso grezzo'. :/ – DotSlashSlash
No, y è il segnale filtrato, x è ciò che l'accelerometro ha dato. Sarebbe più chiaro scrivere che 'xf = k * xf + (1.0 -k) * x' dove xf è la versione filtrata di x, e un'equazione simile per l'asse y. –
@Andrew - grazie per il suggerimento - ora modificato per maggiore chiarezza (spero!). –