Wednesday 1 November 2017

Moving Media Veloce Algoritmo


Spostamento Average. This esempio si insegna come calcolare la media mobile di una serie storica in Excel Una media mobile viene utilizzata per appianare le irregolarità picchi e valli di riconoscere facilmente trends.1 In primo luogo, lasciare che s un'occhiata al nostro tempo serie.2 nella scheda dati, fare clic su dati Analysis. Note può t trovare il pulsante Data Analysis Clicca qui per caricare gli strumenti di analisi aggiuntivo in.3 selezionare media mobile e fare clic su OK.4 Fate clic nella casella intervallo di input e selezionare l'M2 gamma B2. 5 Fare clic nella casella intervallo e digitare 6.6 Fare clic nella casella intervallo di output e selezionare B3.8 cellulare Tracciare la curva di questi values. Explanation perché abbiamo impostato l'intervallo di 6, la media mobile è la media degli ultimi 5 punti di dati e il punto dati corrente Come risultato, i picchi e le valli si distendono il grafico mostra una tendenza in aumento di Excel non è in grado di calcolare la media mobile per i primi 5 punti di dati, perché non ci sono abbastanza precedente Ripetere i dati points.9 passi da 2 a 8 per intervallo di 2 e l'intervallo 4.Conclusione più grande è l'intervallo, più i picchi e le valli si distendono il più piccolo l'intervallo, più le medie mobili sono i dati effettivi points. Moving media - MA. BREAKING GIU media Mobile - MA. As un SMA esempio, consideriamo un titolo con i seguenti prezzi di chiusura oltre 15 days. Week 1 5 giorni 20, 22, 24, 25, 23.Week 2 5 giorni 26, 28, 26, 29, 27.Week 3 5 giorni 28, 30 , 27, 29, 28.A 10 giorni MA sarebbe mediare i prezzi di chiusura per i primi 10 giorni come il primo punto di dati il ​​punto dati successivo sarebbe cadere il primo prezzo, aggiungere il prezzo del giorno 11 e fare la media, e così come below. As mostrato osservato in precedenza, il Mas lag azione in corso prezzo perché si basano sui prezzi passati più lungo è il periodo di tempo per il MA, maggiore è il ritardo così un 200 giorni MA avrà un grado molto maggiore di ritardo rispetto un mA di 20 giorni, perché contiene i prezzi per gli ultimi 200 giorni la lunghezza del mA da utilizzare dipende dagli obiettivi di trading, con AIC più brevi utilizzati per il trading a breve termine ea lungo termine AIC più adatto per investitori a lungo termine 200 - day MA è ampiamente seguita dagli investitori e commercianti, con interruzioni sopra e sotto questa media mobile considerato importante signals. MAs commerciali impartiscono anche importanti segnali di trading per conto proprio, o quando due medie attraversa un MA in aumento indica che la sicurezza è in una tendenza rialzista, mentre un mA in calo indica che è in una tendenza al ribasso Allo stesso modo, slancio verso l'alto è confermata con un crossover rialzista che si verifica quando un mA breve termine attraversa sopra un mA-lungo termine slancio verso il basso è confermata con un crossover ribassista, che si verifica quando un mA breve termine incrocia al di sotto di un MA. As a lungo termine altri hanno detto, si dovrebbe considerare un infinito filtro di risposta all'impulso IIR piuttosto che il filtro FIR risposta all'impulso finita si sta utilizzando ora c'è di più ad esso, ma a prima vista filtri FIR sono implementati come circonvoluzioni espliciti e IIR filtri con equations. The particolare filtro IIR io uso molto in microcontrollori è un unico polo filtro passa-basso Questo è l'equivalente digitale di un semplice filtro RC analogico Per la maggior parte delle applicazioni, questi avranno caratteristiche migliori rispetto al filtro di dialogo che si sta utilizzando con più usi di un filtro scatola che ho incontrato sono il risultato di qualcuno non prestando attenzione in classe elaborazione del segnale digitale, non come risultato di aver bisogno di loro particolari caratteristiche Se si desidera solo per attenuare le alte frequenze si sa è il rumore, un filtro passa basso unipolare è meglio il modo migliore per attuare una digitalmente in un microcontrollore è usually. FILT - FILT FF NUOVO - FILT. FILT è un pezzo di stato persistente Questa è l'unica variabile persistente è necessario per calcolare questo filtro NEW è il nuovo valore che il filtro viene aggiornato con questa iterazione FF è la frazione filtro che regola la pesantezza look filtro questo algoritmo e vedere che per FF 0 il filtro è infinitamente pesanti poiché l'uscita non cambia mai per 1 FF, è davvero nessun filtro del tutto poiché l'uscita solo segue l'ingresso valori utili sono tra su piccoli sistemi si sceglie FF sia 1 2 N in modo che il moltiplicare per FF può essere realizzato come uno spostamento a destra di n bit ad esempio, FF potrebbe essere 1 16 e moltiplicare per FF pertanto uno shift verso destra di 4 bit Altrimenti questo filtro necessita di un solo sottrarre ed una lista, anche se i numeri di solito devono essere più largo il valore di ingresso più precisione numerica in un separato sezione below. I richiede solitamente letture aD significativamente più veloce di quanto non sono necessari e si applicano due di questi filtri in cascata Questo è l'equivalente digitale di due filtri RC in serie, e attenua di 12 dB ottava al di sopra della frequenza di rolloff Tuttavia, per le letture aD esso s di solito più rilevante per guardare il filtro nel dominio del tempo, considerando la sua risposta al gradino Questo ti dice quanto velocemente il sistema vedrà un cambiamento quando la cosa si sta misurando changes. To facilitare la progettazione di questi filtri che significa solo la raccolta di FF e decidere quanti di loro a cascata, io uso il mio programma FILTBITS si specifica il numero di bit di spostamento per ogni FF nella serie cascata di filtri, e si calcola la risposta al gradino e di altri valori in realtà io di solito eseguire questo tramite il mio involucro PLOTFILT copione questo viene eseguito FILTBITS, il che rende un file CSV, quindi traccia il file CSV, ad esempio, qui è il risultato di PLOTFILT 4 4. due parametri per PLOTFILT significa che ci saranno due filtri in cascata del tipo descritto sopra dei valori del 4 indicano il numero di bit di spostamento per realizzare il moltiplicare per FF I due valori FF sono quindi 1 16 in questo case. The traccia rossa è la risposta al gradino unità, ed è la cosa principale da guardare ad esempio, questo indica che se l'ingresso cambia istantaneamente, l'uscita del filtro combinato si depositerà a 90 del nuovo valore in 60 iterazioni se vi interessa circa il 95 tempo di assestamento, allora si deve attendere circa 73 iterazioni, e per il 50 tempo di assestamento solo il 26 iterations. The traccia verde mostra l'output di un singolo piena ampiezza picco questo vi dà un'idea della soppressione del rumore casuale sembra che nessun singolo campione causerà più di un 2 5 cambiamento nel blu traccia output. The è quello di dare una sensazione soggettiva di ciò che questo filtro fa con rumore bianco si tratta di non una prova rigorosa in quanto non vi è alcuna garanzia che cosa esattamente il contenuto era dei numeri casuali scelto come ingresso rumore bianco per questa esecuzione di PLOTFILT e 's solo per dare una sensazione di massima di quanto verrà schiacciata e come liscia è. PLOTFILT, forse FILTBITS, e un sacco di altra roba utile, in particolare per lo sviluppo del firmware PIC è disponibile in Strumenti di sviluppo PIC versione del software al download di software page. Added circa precision. I numerici vedere dai commenti e ora una nuova risposta che ci è interesse a discutere il numero di bit necessari per implementare questo filtro si noti che il moltiplicare per FF creerà Log 2 FF nuovi bit al di sotto del punto di binario su sistemi di piccole dimensioni, FF è di solito scelto per essere 1 2 N in modo che questo si moltiplicano è effettivamente realizzato da un spostamento a destra di N bits. FILT è quindi di solito un punto fisso intero si noti che questo doesn t cambiare una delle matematica dal punto di vista, ad esempio il processore s, se si sta filtrando 10 letture AD bit e N 4 FF 1 16 , allora avete bisogno di 4 bit di frazione al di sotto dei 10 bit letture intero aD quello più processori, si d essere facendo 16 operazioni po interi a causa delle letture aD 10 bit in questo caso, si può ancora fare esattamente le stesse 16 opertions po interi, ma cominciare con le letture aD sinistra spostato da 4 bit il processore doesn t conoscono la differenza e doesn t bisogno di fare i calcoli su interi numeri interi a 16 bit funziona se li si considera di essere 12 4 punto fisso o veri e propri 16 numeri interi bit 16 0 punto fisso. In generale, è necessario aggiungere N bit ciascuno dei poli filtro se don t vuole aggiungere il rumore a causa della rappresentazione numerica nell'esempio precedente, il secondo filtro di due avrebbe dovuto avere 10 4 4 18 bit per non perdere le informazioni in pratica su un computer a 8 bit che significa che D utilizzare i valori a 24 bit Tecnicamente solo il secondo polo di due avrebbe bisogno il valore più ampio, ma per semplicità firmware io di solito uso la stessa rappresentazione, e quindi lo stesso codice, per tutti i poli di un filtro Solitamente scrivo una subroutine o una macro per eseguire l'operazione palo un filtro, quindi applicare che per ogni polo si tratti di una subroutine o una macro dipende dal fatto che i cicli o memoria di programma sono più importanti in quel particolare progetto in entrambi i casi, io uso uno stato zero per passare NEW nella macro subroutine, che aggiorna FILT, ma anche carica che nello stesso stato zero NUOVO era in questo modo è facile da applicare poli multipli in quanto la FILT aggiornata di un polo è il NUOVO del successivo Quando una subroutine, s utile avere un punto puntatore FILT sul modo in, che viene aggiornata a poco dopo FILT sulla via d'uscita in questo modo la subroutine funziona automaticamente su filtri consecutivi in ​​memoria se chiamato più volte con una macro è don t bisogno di un puntatore dal momento che passare l'indirizzo di operare su ogni iteration. Code Examples. Here è un esempio di una macro come descritto sopra per un PIC 18.And ecco una macro simile per PIC 24 o dsPIC 30 o 33.Both questi esempi sono implementati come macro utilizzando il mio PIC assemblatore preprocessore che è più capace di una delle strutture macro built-in. clabacchio Un altro problema Avrei detto è l'implementazione del firmware È possibile scrivere un unico polo passa-basso filtro subroutine una volta, poi applicarlo più volte in realtà io di solito scrivere un tale subroutine per prendere un puntatore in memoria allo stato del filtro, poi lo hanno avanzare il puntatore in modo che possa essere chiamato in successione facilmente per realizzare multipolare filtra Olin Lathrop 20 apr 12 in 15 03.1 grazie mille per le vostre risposte - tutti loro ho deciso di utilizzare questo filtro IIR, ma questo filtro non viene utilizzato come un filtro standard LowPass, dal momento che ho bisogno di valori medi del contatore e confrontarli per rilevare i cambiamenti in un certo intervallo poiché questi valori van essere di dimensioni molto diverse a seconda dell'hardware ho voluto prendere una media in modo da essere in grado di reagire a questi Hardware cambiamenti specifici sensslen automaticamente 21 maggio 12 a 12 06.If si può vivere con la restrizione di una potenza di due serie di elementi a media cioè 2,4,8,16,32 ecc quindi il divario può facilmente ed efficacemente essere fatto su una bassa micro prestazioni senza divisione dedicata, perché può essere fatto come un scorrimento di bit ogni turno a destra è una potenza di due eg. The OP pensava di avere due problemi, che divide in un PIC16 e memoria per il suo anello di buffer Questa risposta dimostra che la divisione non è difficile Bisogna ammettere che non affronta il problema di memoria, ma il sistema SE permette risposte parziali, e gli utenti possono prendere qualcosa da ogni risposta per se stessi, o anche modificare e combinare altri s risposte Poiché alcune delle altre risposte richiedono un'operazione di divisione, hanno sono allo stesso modo incompleto in quanto non mostrano come realizzare in modo efficiente questo su un PIC16 Martin 20 aprile 12 al 13 01.There è una risposta per un vero e proprio movimento filtro a media filtro aka carro merci con requisiti di memoria meno, se don t mente downsampling E 's chiamato in cascata filtro integratore d'ape CIC l'idea è che si dispone di un integratore che si prende le differenze di un periodo di tempo, e il dispositivo di memoria di risparmio chiave è che da downsampling, è don t devono memorizzare ogni valore dell'integratore e ' può essere implementato usando la seguente pseudocode. Your efficace in movimento lunghezza media è di decimationFactor statesize ma avete solo bisogno di mantenere intorno campioni statesize Ovviamente è possibile ottenere prestazioni migliori se il statesize e decimationFactor sono potenze di 2, in modo che gli operatori di divisione e resto vengono sostituiti da turni e maschera-ands. Postscript sono d'accordo con Olin che si dovrebbe sempre prendere in considerazione semplici filtri IIR prima di un filtro a media mobile Se don t bisogno le frequenze-null di un filtro vagone, un 1-palo o basso 2 poli filtro passa probabilmente funzionerà fine. On d'altra parte, se si sta filtrando ai fini della decimazione prendendo un ingresso ad alta frequenza di campionamento e una media per l'utilizzo da parte di un processo a basso tasso di allora un filtro CIC può essere solo quello che stai cerca soprattutto se è possibile utilizzare statesize 1 ed evitare il ringbuffer tutto con un solo integratore precedente value. There s alcune analisi approfondita della matematica dietro utilizzando il filtro IIR del primo ordine che Olin Lathrop ha già descritto sopra sulla Digital Signal Processing scambio pila comprende un sacco di belle immagini l'equazione per questo IIR is. This filtro può essere implementato usando solo numeri interi e nessuna divisione utilizzando il seguente codice potrebbe essere necessario un po 'di debugging come stavo scrivendo da memory. This filtro approssima una media mobile delle ultime K campioni impostando il valore di alfa per 1 K fare questo nel codice precedente per definire ing BITS per LOG2 K, cioè per K 16 bit impostati a 4, per K 4 bit impostato su 2, ecc I ll verificare il codice elencato qui non appena ottengo un cambiamento e modificare questa risposta se needed. answered 23 giugno 12 alle 4 del 04.Here sa media unipolare filtro passa-basso in movimento, con CutoffFrequency frequenza di taglio molto semplice, molto veloce, grandi opere, e quasi nessuna memoria overhead. Note Tutte le variabili hanno portata al di là della funzione di filtro, ad eccezione del passato in newInput. Note si tratta di un unico filtro fase fasi multiple possono essere collegati in cascata insieme per aumentare la nitidezza del filtro Se si utilizza più di una fase, è ll essere necessario regolare DecayFactor quanto riguarda la Cutoff frequenza per compensate. And, ovviamente, tutto ciò che serve è quelle due righe posizionati ovunque, don t bisogno la propria funzione Questo filtro non hanno un tempo di ramp-up prima della media mobile rappresenta quella del segnale di ingresso Se è necessario bypassare quel tempo di accelerazione, si può solo inizializzare media mobile per il primo valore di newInput invece di 0, e spero che il primo isn t newInput un outlier. CutoffFrequency SampleRate ha una gamma compresa tra 0 e 0 5 DecayFactor è un valore compreso tra 0 e 1, di solito vicino ai carri 1.Single precisione sono abbastanza buono per la maggior parte delle cose, ho appena preferisco doppie Se avete bisogno di attaccare con numeri interi, è possibile convertire DecayFactor e ampiezza Factor in numeri interi frazionari, in cui il numeratore viene memorizzato come numero intero, ed il denominatore è una potenza intera di 2 in modo da poter bit-shift verso destra come denominatore piuttosto che dover dividere durante l'anello filtrante per esempio, se DecayFactor 0 99, e si desidera utilizzare gli interi, è possibile impostare DecayFactor 0 99 65536 64881 e poi ogni volta che moltiplicare per DecayFactor nel loop filtro, basta spostare il risultato più 16.For informazioni su questo, un ottimo libro che s on-line, il capitolo 19 sulla filters. PS ricorsive per lo spostamento di paradigma media, un approccio diverso per impostazione DecayFactor e AmplitudeFactor che può essere più rilevante per le vostre esigenze, lasciare s dire si desidera che i precedenti, circa 6 articoli in media insieme, facendo in modo discreto , si d aggiungere 6 articoli e dividere per 6, in modo da poter impostare la AmplitudeFactor a 1 6, e DecayFactor a 1 0 - AmplitudeFactor. answered 14 maggio 12 alla 22 55.Everyone altro ha commentato a fondo l'utilità di IIR vs FIR, e sul potere di due figli divisione I d appena piace dare dettagli un po 'implementazione il funziona bene su piccoli microcontrollori senza FPU ci s alcuna moltiplicazione di seguito, e se si mantiene N una potenza di due, tutta la divisione è po' a ciclo unico buffer circolare - shifting. Basic FIR tenere un tampone di corsa degli ultimi valori N, e una somma parziale di tutti i valori nel buffer Ogni volta che un nuovo campione entra, sottrarre il valore più vecchio nel buffer da SUM, sostituirlo con il nuovo campione, aggiungere il nuovo campione di SUM, e l'uscita SUM N. Modified IIR ring buffer mantenere una somma parziale degli ultimi N valori Ogni volta che un nuovo campione entra, SUM - SUM N, aggiungere il nuovo campione, e SUM uscita N. answered 28 agosto 13 al 13 45.If io vi sto leggendo in questo, si ri descrivendo un primo ordine IIR filtrare il valore si ri sottraendo isn t il valore più vecchio che sta cadendo fuori, ma è invece la media dei valori precedenti primo ordine filtri IIR possono certamente essere utili, ma non sono sicuro di cosa si intende quando si suggerisce che l'uscita è la stessa per tutti i segnali di questa in una frequenza di campionamento 10KHz, alimentando un onda quadra a 100Hz in un filtro casella 20-tappa produrre un segnale che aumenta in modo uniforme per 20 campioni, si trova in alto a 30, scende in modo uniforme per 20 campioni, e si siede basso per 30 a supercat filtro IIR del primo ordine 28 agosto 13 al 15 31.will produrre un'onda che inizia forte aumento e gradualmente stabilizza vicino ma non al massimo in ingresso, poi inizia bruscamente cadere e gradualmente livelli fuori vicino ma non al minimo ingresso in diverso comportamento Supercat 28 ago 13 ad 15 32.One problema è che una semplice media mobile può o non può essere utile con un filtro IIR, è possibile ottenere un bel filtro con relativamente pochi Calcoli La FIR si descrive può solo dare un rettangolo nel tempo - un sinc in freq - e si può t gestire i lobi laterali può essere valsa la pena di gettare in un paio di moltiplica interi per rendere un bel FIR sintonizzabile simmetrica se si può risparmiare l'orologio zecche Scott Seidman 29 agosto 13 al 13 50. ScottSeidman Non c'è bisogno di moltiplica se uno ha semplicemente ogni fase della FIR sia uscita la media del ingresso a tale fase e il suo valore memorizzato precedente, e quindi memorizzare l'ingresso se si ha la gamma numerica, si potrebbe utilizzare la somma piuttosto media Sia che s meglio di una scatola filtro dipende dall'applicazione la risposta di un filtro scatola con un ritardo totale di 1 ms, per esempio, avrà una brutta picco d2 dt quando il cambiamento di ingresso, e di nuovo 1ms tardi, ma avrà la minima possibile d dt per un filtro con un totale di 1ms Tempo Supercat 29 ago 13 ad 15 25. come ha detto mikeselectricstuff, se si ha realmente bisogno di ridurre le esigenze di memoria, e don t mente il tuo risposta all'impulso essere un esponenziale, invece di un impulso rettangolare, vorrei andare per un movimento filtro di media esponenziale li uso a lungo con quel tipo di filtro, don t bisogno di alcun tampone È don t devono conservare N passato campioni Solo uno Quindi, i tuoi requisiti di memoria vengono abbattuti da un fattore di N. Also, è don t bisogno di alcuna divisione per che solo moltiplicazioni Se si ha accesso a floating punto di aritmetica, utilizzare moltiplicazioni in virgola mobile in caso contrario, fare moltiplicazioni interi e turni a destra Tuttavia, siamo nel 2012, e vi consiglierei di usare compilatori e MCU che consentono di lavorare con numbers. Besides in virgola mobile essendo più memoria efficiente e più veloce è don t devono aggiornare gli elementi in ogni buffer circolare, direi che è anche più naturale perché una risposta all'impulso esponenziale corrisponde meglio il modo in cui la natura si comporta, nella maggior parte cases. answered 20 apr 12 in 9 59.One questione con il filtro IIR come quasi toccato da Olin e supercat ma apparentemente ignorato da altri è che l'arrotondamento introduce una certa imprecisione e potenzialmente polarizzazione troncamento supponendo che N è una potenza di due, e solo aritmetica intera viene utilizzato, lo spostamento a destra non elimina sistematicamente LSB del nuovo campione Ciò significa che per quanto tempo la serie potrebbe mai essere, la media non potrà mai prendere quelle in account. For esempio, si supponga una serie lentamente diminuendo 8,8,8 8,7,7,7 7,6,6 , e assumere la media è infatti 8 all'inizio il campione pugno 7 porterà la media di 7, qualunque sia la forza del filtro Solo per un campione Stessa storia per 6, ecc Ora pensare il contrario della serie va in su la media rimarrà accesa 7 per sempre, fino a quando il campione è abbastanza grande per farlo change. Of Naturalmente, è possibile correggere la distorsione con l'aggiunta di 1 2 N 2, ma che ha vinto t realmente risolvere il problema di precisione in quel caso la serie decrescente rimarrà per sempre a 8 fino a quando il campione è 08-01 FEBBRAIO N 2 per N 4 per esempio, qualsiasi campione sopra lo zero non mancherà di tenere i unchanged. I media ritengono una soluzione per questo implicherebbe tenere un accumulatore di LSB perduta, ma io didn t rendono abbastanza lontano per avere il codice pronto, e io non sono sicuro che non avrebbe danneggiato il potere IIR in alcuni altri casi di serie, per esempio se 7,9,7,9 sarebbe in media di 8 poi. Olin, il vostro cascata a due stadi anche avrebbe bisogno di qualche spiegazione vuoi dire che regge due valori medi con il risultato del primo alimentato nella seconda in ogni iterazione Che s il beneficio di questo.

No comments:

Post a Comment