Tuesday 22 August 2017

Ricorsivo Mobile Media Filtro


La Guida scienziato e ingegneri per Digital Signal Processing di Steven W. Smith, Ph. D. Un enorme vantaggio del filtro media mobile è che può essere implementato con un algoritmo che è molto veloce. Per capire questo algoritmo, immaginare passando un segnale di ingresso, x, attraverso un sette punti movimento filtro a media per formare un segnale di uscita, y. Ora guardiamo a come due punti di uscita adiacenti, y 50 y 51, sono calcolati: Questi sono quasi gli stessi punti di calcolo x 48 x 53 attraverso deve essere aggiunto per y 50, e di nuovo per y 51. Se y 50 è già stato calcolato , il modo più efficiente per calcolare y 51 è: Una volta y 51 è stato trovato utilizzando y 50, allora y 52 può essere calcolato dal campione y 51, e così via. Dopo il primo punto è calcolato in y, tutti gli altri punti possono essere trovati con un solo addizione e sottrazione per punto. Questo può essere espressa dalla formula: Si noti che questa equazione utilizzare due fonti di dati per calcolare ciascun punto nell'output: punti dall'ingresso e punti precedentemente calcolati dall'output. Questo è chiamato un equazione ricorsiva, il che significa che il risultato di un calcolo viene utilizzato nei calcoli futuri. (Il termine ricorsiva ha anche altri significati, soprattutto in informatica). Capitolo 19 illustra una varietà di filtri ricorsivi in ​​maggior dettaglio. Essere consapevoli del fatto che il filtro ricorsivo media mobile è molto diverso dai filtri tipici ricorsivi. In particolare, la maggior parte dei filtri ricorsivi hanno una risposta infinitamente lunga di impulso (IIR), composto da sinusoidi ed esponenziali. La risposta all'impulso della media mobile è un impulso rettangolare (risposta all'impulso finita, o FIR). Questo algoritmo è più veloce di altri filtri digitali per diversi motivi. Innanzitutto, ci sono solo due calcoli per punto, indipendentemente dalla durata del kernel filtro. In secondo luogo, l'aggiunta e la sottrazione sono le uniche operazioni matematiche necessarie, mentre la maggior parte dei filtri digitali richiedono tempo moltiplicazione. In terzo luogo, il sistema di indicizzazione è molto semplice. Ogni indice in Eq. 15-3 è trovato aggiungendo o sottraendo costanti intere che possono essere calcolati prima dell'inizio di filtraggio (cioè P e Q). Quarto, l'intero algoritmo può essere effettuata con rappresentazione intera. A seconda dell'hardware utilizzato, interi possono essere più di un ordine di grandezza più veloce di virgola mobile. Sorprendentemente, rappresentazione intera funziona meglio di virgola mobile con questo algoritmo, oltre ad essere più veloce. L'errore di arrotondamento da aritmetica in virgola mobile può produrre risultati imprevisti se non si sta attenti. Ad esempio, immaginare un segnale di 10.000 campione che viene filtrato con questo metodo. L'ultimo campione del segnale filtrato contiene l'errore accumulato di 10.000 addizioni e sottrazioni 10.000. Ciò appare nel segnale di uscita come un offset deriva. I numeri interi non hanno questo problema, perché non vi è alcun errore di arrotondamento in aritmetica. Se è necessario utilizzare in virgola mobile con questo algoritmo, il programma in Tabella 15-2 mostra come usare un doppio accumulatore di precisione per eliminare questa statistica drift. In una media mobile semplice è un algoritmo che calcola la media ponderata degli ultimi n campioni. Il parametro n è spesso chiamato dimensione della finestra, poiché l'algoritmo può essere pensato come una finestra che scorre sopra i punti di dati. Utilizzando una formulazione ricorsiva dell'algoritmo, il numero di operazioni necessarie per campione è ridotto ad uno più, uno sottrazione e una divisione. Poiché la formulazione è indipendente dalla dimensione della finestra n. la complessità runtime è O (1). cioè costante. La formula ricorsiva della media mobile non ponderata, dove avg è la media mobile e x rappresenta un punto di dati. Così, ogni volta che le diapositive finestra a destra, un punto di dati, la coda, cade e un punto di dati, la testa, si muove in. Attuazione Un'implementazione della media mobile semplice è di prendere in considerazione quanto segue inizializzazione algoritmo Finché la finestra non è completamente popolato con valori, la formula ricorsiva fallisce. una conservazione accesso all'elemento coda, che a seconda della implementazione richiede una memoria di n elementi. My attuazione utilizza la formula presentata quando la finestra è completamente popolato con valori, e altrimenti passa alla formula, che aggiorna la media ricalcolando la somma degli elementi precedenti. Si noti che questo può portare a instabilità numeriche causa di aritmetica in virgola mobile. Per quanto riguarda il consumo di memoria è interessato, l'applicazione utilizza iteratori per tenere traccia di elementi testa e di coda. Questo porta ad una implementazione con requisiti di memoria costanti indipendenti dalla dimensione della finestra. Ecco la procedura di aggiornamento che scorre la finestra a destra. Nella maggior parte delle collezioni invalidare loro enumeratori quando la raccolta sottostante viene modificato. L'implementazione, invece, si basa su enumeratori validi. Soprattutto in streaming di applicazioni basate le esigenze di raccolta sottostanti modificati quando un nuovo elemento arriva. Un modo per affrontare questo è quello di creare una semplice raccolta circolare dimensione fissa di dimensioni n1 che non invalida i suoi iteratori e alternativamente aggiungere un elemento e la chiamata Shift. Vorrei poter capire come implementare in realtà questo, come la funzione di test è molto confusa per me8230 Ho bisogno di convertire i dati in array, quindi eseguire SMA nuova SMA (20, array) per un periodo di 20 SMA Come faccio a gestire funzione di spostamento () E 'necessario attuare costruttori. (Mi dispiace per la confusione). Non si don8217t bisogno di convertire i dati in un array a patto che i dati implementa IEnumerable1 e il tipo enumerato è doppio. Per quanto riguarda la messaggistica privata è interessato è necessario convertire il DataRow a qualcosa che è enumerabile di valori doppi. Il tuo approccio funziona. Shift, scivola la finestra di una posizione a sinistra. Per un set di dati di dire 40 valori e un 20 periodo di SMA si dispone di 21 posizioni la finestra si adatta (40 8211 20 1). Ogni volta che si chiama Shift () la finestra viene spostato a sinistra di una posizione e media () restituisce il SMA per la posizione della finestra corrente. Cioè, la media ponderata di tutti i valori all'interno della finestra. Inoltre la mia applicazione permette di calcolare la SMA, anche se la finestra non è completamente riempita all'inizio. Quindi, in sostanza Spero che questo aiuti. Ulteriori domande COPYRIGHT Christoph Heindl e cheind. wordpress, 2009-2012. Autorizzato la duplicazione uso Andor di questo materiale senza espressa autorizzazione scritta e da questo blog proprietario autore Andor è severamente proibito. Estratti e link possono essere utilizzati a condizione che la piena e chiara credito viene data alla Christoph Heindl e cheind. wordpress con direzione appropriata e specifica per il contenuto originale. Recenti PostsRecursive Media Mobile Filter toro quot quot (0) 0 toro 2 160.160.160.160 Il filtro media mobile è un filtro FIR di lunghezza N, con tutti i rubinetti posti uguali a (1N) .160 suo noto per la separazione di frequenza scadente, ma il tempo di risposta eccellente - in questo senso, fuori-Bessels un Bessel filter.160 è possibile implementare con blocco SigmaStudios FIR, come descritto qui: più lungo è il filtro, la più smoothing - ma l'algoritmo filtro FIR standard utilizza un sacco di istruzioni per filtri enormi, perché deve moltiplicare i coefficienti per ogni tap.160 Questo è uno spreco, quando tutti i coefficienti sono same.160 Come Capitolo 15 di Steven W. Smith libro fa notare, si può fare un filtro a media mobile con una tecnica ricorsiva che ha un rubinetto prima e dopo un (N-1) formato delay.160 Tale filtro appare sotto come parte di un circuito di prova con sorgente di segnale ed un filtro di Bessel per il confronto: 160160160160 coefficienti siano estratte per il blocco di guadagno singolo sul input.160 The presente campione aggiunge all'uscita mentre entra il ritardo, il campione ritardato sottrae l'uscita come exits.160 il sommatore con il feedback accumula queste aggiunte e sottrazioni per formare l'uscita - questo fa qualcosa questo è banale in C, ma è altrimenti un dolore nel GUI.160 Anche se una tecnica ricorsiva è usata, il filtro rimane un vero e proprio filtro FIR - la lunghezza della sua risposta all'impulso è impostato solo dalla vostra ritardo. 160160160160 Il mio ingresso di test è un'onda quadra con noise.160 aggiunti risultati filtrati appaiono come la traccia superiore in entrambe le foto - In primo luogo il filtro media mobile: Il filtro di Bessel: 160160160160 Il filtro media mobile consente più rumore attraverso, ma è meglio conserva la forma quadrata onde - doesnt arrotondare gli angoli, e la salita e in discesa sono simmetriche (la sua fase lineare) 0,160 Ascoltando le due forme d'onda con le cuffie mostra un risultato simile - più rumore con il filtro media mobile, ma la caratteristica suono di un'onda quadra passa attraverso.

No comments:

Post a Comment