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 questo scienziato e ingegneri Guida drift. The al Digital Signal Processing di Steven W. Smith, Ph. D. Capitolo 19: Filtri ricorsivi Il metodo ricorsivo Per avviare la discussione di filtri ricorsivi, immaginate che avete bisogno di estrarre informazioni da un segnale, x. Il vostro bisogno è così grande che assumete un vecchio professore di matematica per elaborare i dati per voi. Il compito è quello di filtrare i professori x per la produzione di y, si spera che contiene le informazioni che interessa. Il professore inizia la sua opera di calcolare ogni punto y secondo alcuni algoritmi che è bloccato saldamente nel suo cervello over-sviluppato. in parte attraverso l'operazione, si verifica un evento più sfortunato. Il professore inizia a balbettare su singolarità analitiche e trasforma frazionali, e altri demoni da un incubo matematici. E 'chiaro che il professore ha perso la sua mente. Si guarda con ansia il professore, e l'algoritmo, vengono portati via da alcuni uomini in camice bianco. È freneticamente leggere le note professori per trovare l'algoritmo che stava usando. Si scopre che aveva completato il calcolo dei punti y 0 a y 27, e stava per iniziare il punto y 28. Come mostrato in fig. 19-1, lasceremo la variabile, n. rappresentano il punto che si sta calcolando. Ciò significa che yn è campione 28 nel segnale di uscita, yn - 1 è campione 27, yn - 2 è campione 26, ecc Analogamente, xn è il punto 28 nel segnale di ingresso, xn - 1 è punto 27, ecc Per capire l'algoritmo utilizzato, ci chiediamo: Quali informazioni sono state disponibili al professore per calcolare YN, il campione attualmente in lavorazione la più ovvia fonte di informazioni è il segnale di ingresso. vale a dire, i valori: xn, xn - 1, xn - 2, 8230. Il professore avrebbe potuto essere moltiplicando ogni punto del segnale di ingresso per un coefficiente, e aggiungendo i prodotti insieme: Si dovrebbe riconoscere che questo non è altro che semplice convoluzione, con i coefficienti: a 0. un 1. 2. 8230, formando il nucleo di convoluzione. Se questo era tutto il professore stava facendo, ci fosse scadente molto bisogno di questa storia, o di questo capitolo. Tuttavia, vi è un'altra fonte di informazioni che il professore ha avuto accesso a: i valori precedentemente calcolati del segnale in uscita, tenutasi a: yn - 1, yn - 2, yn - 3, 8230. Usando queste informazioni supplementari, l'algoritmo sarebbe nella forma: in parole, ogni punto del segnale di uscita si trova moltiplicando i valori del segnale in ingresso i coefficienti a, moltiplicando i valori precedentemente calcolati dal segnale di uscita dai coefficienti b, e aggiungendo i prodotti insieme. Si noti che ci non è un valore per B 0. perché questo corrisponde al campione calcolata. Equazione 19-1 è chiamata equazione ricorsione. e filtri che lo utilizzano sono chiamati filtri ricorsivi. I valori di A e B che definiscono il filtro sono chiamati i coefficienti di ricorsione. In pratica, non più di circa una dozzina di coefficienti di ricorsione possono essere utilizzati o il filtro diventa instabile (cioè l'uscita aumenta continuamente o oscilla). Tabella 19-1 mostra un programma di filtro ricorsivo esempio. filtri ricorsivi sono utili perché bypassare una convoluzione più lungo. Per esempio, si consideri che cosa accade quando una funzione delta viene fatto passare attraverso un filtro ricorsivo. L'uscita è la risposta all'impulso filtri. e sarà tipicamente una oscillazione sinusoidale che decade esponenzialmente. Dal momento che questa risposta all'impulso in infinitamente lungo, filtri ricorsivi sono spesso chiamati filtri infiniti risposta all'impulso (IIR). In effetti, filtri ricorsivi convolve il segnale di ingresso con un kernel filtro molto lungo, anche se solo pochi coefficienti sono coinvolti. Il rapporto tra i coefficienti ricorsione e la risposta filtri è dato da una tecnica matematica chiamata z-trasformata. l'argomento del capitolo 31. Ad esempio, la trasformata z può essere utilizzato per operazioni quali: la conversione tra i coefficienti ricorsione e la risposta in frequenza, combinando stadi in cascata e parallele in un unico filtro, progettare sistemi ricorsivi che imitano filtri analogici, ecc . Purtroppo, la Z-transform è molto matematica, e più complicato di quanto la maggior parte degli utenti DSP sono disposti ad affrontare. Questo è il regno di quelli che si specializzano in DSP. Ci sono tre modi per trovare i coefficienti di ricorsione, senza dover capire la Z-trasformazione. In primo luogo, questo capitolo contiene equazioni di progetto per i diversi tipi di semplici filtri ricorsivi. In secondo luogo, il capitolo 20 fornisce un programma per computer libro di cucina per la progettazione dei più sofisticati filtri passa-basso Chebyshev e passa-alto. In terzo luogo, il capitolo 26 descrive un metodo iterativo per la progettazione di filtri ricorsivi con un arbitrario statistiche response. In frequenza una semplice media mobile è 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.
Comments
Post a Comment