Tuesday 7 November 2017

Moving Media Vs Low Pass Filtro


La media mobile come un filtro La media mobile è spesso usato per lisciare i dati in presenza di rumore. La media mobile non è sempre riconosciuta come filtro Finite Impulse Response (FIR) che è, mentre è in realtà uno dei filtri più comuni nel trattamento del segnale. Trattandolo come un filtro consente il confronto con, per esempio,-sinc finestrate filtri (vedi gli articoli sul passa-basso.. Banda passa-passa-alto e e-banda rifiutano filtri per gli esempi di quelli). La differenza principale con questi filtri è che la media mobile è adatto per segnali per cui le informazioni utili è contenuto nel dominio del tempo. dei quali lisciatura misurazioni facendo la media è un ottimo esempio. filtri finestrato-sinc, d'altro canto, sono forti esecutori nel dominio della frequenza. con equalizzazione in elaborazione audio come esempio tipico. C'è un confronto più dettagliato di entrambi i tipi di filtri nel dominio del tempo vs prestazioni dominio della frequenza dei filtri. Se si dispone di dati per i quali sia il tempo e dominio della frequenza sono importanti, allora si potrebbe desiderare di avere uno sguardo al Variazioni sul media mobile. che presenta un certo numero di versioni ponderata della media mobile che sono meglio a questo. La media mobile di lunghezza (N) può essere definito come scritto come è tipicamente implementato, con il campione di uscita corrente come media dei campioni precedenti (N). Visto come un filtro, la media mobile esegue una convoluzione della sequenza di input (xn) con un impulso rettangolare di lunghezza (N) e l'altezza (1N) (per rendere l'area del polso, e, di conseguenza, il guadagno del filtro , uno ). In pratica, è meglio prendere (N) dispari. Sebbene una media mobile può anche essere calcolata utilizzando un numero di campioni, utilizzando un valore dispari per (N) ha il vantaggio che il ritardo del filtro sarà un numero intero di campioni, poiché il ritardo di un filtro con (N) campioni è esattamente ((N-1) 2). La media mobile può quindi essere allineato esattamente ai dati originali spostandolo da un numero intero di campioni. Time Domain Poiché la media mobile è una convoluzione con un impulso rettangolare, la sua risposta in frequenza è una funzione sinc. Questo rende qualcosa come il duale del filtro finestrato-sinc, dal momento che è una convoluzione con un impulso sinc che si traduce in una risposta in frequenza rettangolare. È questa risposta in frequenza sinc che rende la media mobile un esecutore povero nel dominio della frequenza. Tuttavia, esso funziona molto bene nel dominio del tempo. Pertanto, è ideale per lisciare i dati per rimuovere il rumore, mentre allo stesso tempo mantenendo una risposta a gradino veloce (Figura 1). Per il tipico rumore additivo gaussiano bianco (AWGN) che è spesso assunto, media campioni (N) ha l'effetto di aumentare il SNR di un fattore (sqrt N). Dal momento che il rumore per i singoli campioni non è correlata, non vi è alcun motivo di trattare ogni campione in modo diverso. Quindi, la media mobile, che dà ogni campione lo stesso peso, sarà sbarazzarsi della quantità massima di rumore per una data nitidezza risposta al gradino. Attuazione Poiché è un filtro FIR, la media mobile può essere attuato mediante convoluzione. Si avrà quindi la stessa efficacia (o la mancanza di esso) come qualsiasi altro filtro FIR. Tuttavia, può anche essere implementato in modo ricorsivo, in maniera molto efficiente. Segue direttamente dalla definizione che questa formula è il risultato delle espressioni per (yn) e (YN1), vale a dire, in cui si nota che il cambio tra (YN1) e (yn) è che un termine supplementare (xn1N) appare in alla fine, mentre il termine (xn-n1n) viene rimosso dall'inizio. Nelle applicazioni pratiche, è spesso possibile omettere la divisione per (N) per ogni termine compensando il guadagno risultante di (N) in un altro luogo. Questo ricorsiva attuazione sarà molto più veloce di convoluzione. Ogni nuovo valore (y) può essere calcolato con solo due aggiunte, invece dei (N) aggiunte che sarebbe necessaria per un'attuazione semplice della definizione. Una cosa da guardare fuori per una implementazione ricorsiva è che errori di arrotondamento si accumulano. Questo può o non può essere un problema per la vostra applicazione, ma implica anche che questo ricorsiva implementazione potrà mai funzionare meglio con un'implementazione intero che con numeri in virgola mobile. Questo è piuttosto insolito, poiché una implementazione in virgola mobile solito è più semplice. La conclusione di tutto questo deve essere che non bisogna mai sottovalutare l'utilità del semplice filtro media mobile nelle applicazioni di elaborazione dei segnali. Filter Design Tool Questo articolo è completato con uno strumento Filter Design. Esperimento con diversi valori di (N) e visualizzare i filtri risultanti. Prova nowFrequency risposta del Running Filter media La risposta in frequenza di un sistema LTI è DTFT della risposta impulsiva, la risposta all'impulso di un L - Sample media mobile è Poiché il filtro media mobile è FIR, la risposta in frequenza riduce al finito somma possiamo usare l'identità molto utile per scrivere la risposta in frequenza da dove abbiamo lasciato ae meno jomega. N 0 e M L meno 1. Ci può essere interessato grandezza di questa funzione per determinare quali frequenze ottenere attraverso il filtro non attenuato e che sono attenuati. Di seguito è un grafico della grandezza di questa funzione per L 4 (rosso), 8 (verde), e 16 (blu). L'asse orizzontale va da zero a radianti pi per campione. Si noti che in tutti e tre i casi, la risposta in frequenza ha una caratteristica passa-basso. Un componente costante (frequenza zero) in ingresso passa attraverso il filtro non attenuato. Alcune frequenze più alte, come Pi 2, sono completamente eliminati dal filtro. Tuttavia, se l'intento era quello di progettare un filtro passa-basso, quindi non abbiamo fatto molto bene. Alcune delle alte frequenze vengono attenuate solo per un fattore di circa 110 (per la media 16 punti in movimento) o 13 (per la media mobile di quattro punti). Possiamo fare molto meglio di così. La trama di cui sopra è stato creato dal seguente codice Matlab: omega 0: pi400:. PI H4 (14) (1-exp (-iomega4)) (1-exp (-iomega)) H8 (18) (1-exp (- iomega8)). (1-exp (-iomega)) H16 (116) (1-exp (-iomega16)). (1-exp (-iomega)) terreno (omega, abs (H4) abs (H8) abs ( H16)) asse (0, pi, 0, 1) Copyright copia 2000- - University of California, BerkeleyIm codifica qualcosa nel momento in cui Im prendendo un po 'di valori nel tempo da una bussola hardware. Questa bussola è molto preciso e aggiorna molto spesso, con il risultato che se jiggles un po ', io alla fine con il thats valore dispari selvaggiamente in contrasto con i suoi vicini. Voglio appianare quei valori fuori. Dopo aver fatto qualche lettura in giro, sembra che quello che voglio è un filtro passa-alto, un filtro passa-basso o una media mobile. media posso scendere con movimento, basta tenere una cronologia degli ultimi 5 valori o qualsiasi altra cosa, e utilizzare la media di quei valori a valle nel mio codice dove sono stato una volta solo usando il valore più recente. Questo dovrebbe, credo, appianare quei jiggles bene, ma mi sembra che la sua probabilmente abbastanza inefficiente, e questo è probabilmente uno di quei problemi noti per programmatori proprio a cui theres una soluzione veramente pulito intelligente Math. Sono, comunque, uno di quei programmatori autodidatti terribili senza uno straccio di istruzione formale in qualcosa anche vagamente correlate a CompSci o la matematica. Leggendo in giro un po 'suggerisce che questo potrebbe essere un filtro alto o passa-basso, ma non posso trovare qualche cosa che spiega in termini comprensibili ad un hack come me, quale sarà l'effetto di questi algoritmi sarebbe su un array di valori, per non parlare di come la matematica lavori. La risposta data qui. per esempio, fa tecnicamente rispondere alla mia domanda, ma solo in termini comprensibili a coloro che probabilmente già sapere come risolvere il problema. Sarebbe una persona molto bella e intelligente in effetti che potrebbe spiegare il tipo di problema si tratta, e come le soluzioni lavorare, in termini comprensibili a un laureato Arts. chiesto 21 settembre 10 alle 13:01 Se la media mobile deve essere lungo al fine di ottenere la lisciatura richiesto, e non avete veramente bisogno di alcuna particolare forma di kernel, poi tu sei meglio se si utilizza un diminuisce in modo esponenziale media mobile: dove scegliere piccolo per essere un costante appropriata (ad esempio, se si sceglie piccolo 1- 1N, avrà la stessa quantità di media come una finestra di dimensioni N, ma distribuita in modo diverso sui punti più anziani). In ogni caso, dal momento che il prossimo valore della media mobile dipende solo quello precedente ei dati, non dovete mantenere una coda o niente. E si può pensare a questo come fare qualcosa di simile, Bene, Ive ha ottenuto un nuovo punto, ma io non veramente fiducia, quindi ho intenzione di mantenere il 80 del mio vecchio stima della misura, e solo fiducia in questo nuovo punto di dati 20. Quello è più o meno lo stesso che dire, Beh, mi fido solo questo nuovo punto 20, e mal uso 4 altri punti che mi fido lo stesso importo, solo che invece di esplicitamente prendere gli altri 4 punti, sei partendo dal presupposto che la si media di fatto l'ultima volta era ragionevole in modo da poter utilizzare il lavoro precedente. risposto 21 settembre 10 alla 14:27 Hey, so che questo è di 5 anni di ritardo, ma grazie per una risposta impressionante. I39m lavorando su un gioco in cui il suono cambia, sulla base di velocità, ma a causa di eseguire il gioco su un computer lento-ass, la velocità sarebbe fluttuare selvaggiamente, che andava bene per la guida, ma super fastidioso in termini di suono. Questa è stata una soluzione molto semplice e poco costoso per qualcosa che ho pensato che sarebbe stato un problema molto complesso. ndash Adam 16 marzo 15 alle 20:20 Se si sta tentando di rimuovere il valore dispari occasionale, un filtro passa-basso è la migliore delle tre opzioni che avete identificato. filtri passa-basso consentono modifiche bassa velocità come quelle causate ruotando una bussola a mano, respingendo variazioni ad alta velocità come quelle causate da urti sulla strada, per esempio. Una media mobile probabilmente non sarà sufficiente, dal momento che gli effetti di una singola blip nei dati influenzeranno diversi valori successivi, a seconda della dimensione della finestra media mobile. Se vengono facilmente rilevati i valori dispari, si può anche essere meglio con un algoritmo problema tecnico-rimozione che li ignora completamente: Ecco un grafico per illustrare guick: Il primo grafico è il segnale di ingresso, con un difetto sgradevole. Il secondo grafico mostra l'effetto di una media mobile 10-campione. Il grafico finale è una combinazione della media 10-campione e l'algoritmo di rilevamento inconveniente semplice mostrato sopra. Quando viene rilevato il glitch, la media di 10 campioni è utilizzato al posto del valore effettivo. risposto 21 Set 10 in 13:38 Bene spiegato, e punti fx per il grafico) ndash Henry Cooke 22-set-10 a 0:50 Wow. Raramente ho visto una bella risposta così ndash Mouse 4 giugno 13 a 9:14 La media mobile è un filtro passa-basso. ndash nomen 21 ottobre 13 ad 19:36 Prova una mediana runningstreaming invece. ndash kert 25 aprile 14 al 22:09 Media mobile posso scendere con. ma mi sembra che la sua probabilmente abbastanza inefficiente. C'è davvero alcun motivo di una media mobile dovrebbe essere inefficiente. Si mantiene il numero di punti di dati che si desidera in qualche tampone (come una coda circolare). Su ogni nuovo punto di dati, si pop il valore più vecchio e sottrarre da una somma, e spingere il più nuovo e aggiungerlo alla somma. Quindi ogni nuovo punto di dati realmente comporta solo poppush, una addizione ed una sottrazione. La vostra media mobile è sempre questa somma spostamento diviso per il numero di valori nel buffer. Si diventa un po 'più complicato se sei ricevere dati contemporaneamente da più thread, ma dal momento che i dati proviene da un dispositivo hardware che sembra assai dubbio per me. Oh, e anche: terribili programmatori autodidatti unire) La media mobile sembrava inefficiente perché si deve memorizzare un buffer di valori - meglio fare solo alcuni Clever matematica con il valore di ingresso e il valore di lavoro corrente penso that39s come media mobile esponenziale lavori. Un I39ve ottimizzazione visto per questo tipo di media mobile comporta l'uso di una coda di lunghezza fissa amp l'indicazione di dove ci si trova in quella coda, e solo avvolgendo il puntatore (con o se). Voila pushpop No costoso. Potere ai dilettanti, fratello ndash Henry Cooke 22 settembre 10 a 0:54 Henry: Per una media straight-up in movimento si ha bisogno semplicemente il buffer in modo da sapere quale valore viene spuntato quando il valore successivo ottiene spinto. Detto questo, la coda quotfixed lunghezza AMP A pointerquot si sta descrivendo è esattamente quello che volevo dire da queue. quot quotcircular That39s perché dicevo che isn39t inefficiente. Cosa hai pensato che volevo dire E se la vostra risposta è gamma quotan che sposta i suoi valori di nuovo su ogni removalquot indicizzato (come std :: vector in C). bene, allora, I39m così male ho don39t neanche voglia di parlare con te più) ndash Dan Tao 22 10 set a 1:58 Henry: Ho don39t so AS3, ma un programmer39s Java ottenuto collezioni come CircularQueue a disposizione hisher (I39m non un sviluppatore Java quindi I39m sicuro che ci sono esempi migliori là fuori that39s proprio quello che ho trovato da una rapida ricerca su Google), che implementa appunto la funzionalità we39re parlando. I39m abbastanza fiducioso la maggior parte dei linguaggi di medio e basso livello con le librerie standard di avere qualcosa di simile (ad esempio in there39s QueueltTgt). Comunque, ero filosofia me, quindi. tutto è perdonato. ndash Dan Tao 22 settembre 10 alle 12:44 una media mobile diminuisce in modo esponenziale può essere calcolato a mano con solo la tendenza se si utilizzano i valori corretti. Vedere fourmilab. chhackdiete4 per un'idea su come farlo rapidamente con carta e penna, se siete alla ricerca di media mobile esponenziale lisciato con 10 levigante. Ma dal momento che si dispone di un computer, è probabilmente vuole fare spostamento binario rispetto a decimale spostando) In questo modo, tutto ciò che serve è una variabile per il valore corrente e uno per la media. La media successivo può essere calcolata da questo. ha risposto 21 settembre 10 alla 14:39 ce n'è una tecnica chiamata un cancello gamma che funziona bene con i campioni spuri bassa occorrenza. ipotizzando l'utilizzo di una delle tecniche di filtro di cui sopra (media mobile, esponenziale), una volta che hai la storia sufficiente (una costante di tempo) è possibile testare il nuovo campione di dati in entrata per ragionevolezza, prima di essere aggiunto al calcolo. è richiesta una certa conoscenza del cambio di velocità di massimo ragionevole del segnale. il campione grezzo viene confrontato con il più recente valore livellato, e se il valore assoluto di questa differenza è maggiore del range consentito, il campione si lancia (o sostituito con qualche euristica, ad es. una previsione basata sul differenziale pendenza o la tendenza valore di previsione da doppia livellamento esponenziale) risponde 30 apr 16 anni al 6: 56A semplice, unipolare, passa-basso, filtro IIR ricorsivo è semplice e facile da implementare, ad esempio, dove x, y sono le prime segnali (non filtrato) XY accelerometro, 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 grande k indica una costante di tempo più lungo ). È possibile determinare k empiricamente, o se si conosce la frequenza richiesta cut-off, Fc. quindi è possibile utilizzare la formula: dove Fs è la frequenza di campionamento. Si noti che xf, yf sono i valori precedenti del segnale di uscita sul RHS, ei nuovi valori di uscita sul lato sinistro dell'espressione sopra. Si noti anche che stiamo assumendo qui che vi sarà il campionamento dei segnali dell'accelerometro a intervalli di tempo regolari, ad esempio ogni 10 ms. La costante di tempo sarà una funzione sia di k e di questo intervallo di campionamento.

No comments:

Post a Comment