Flytting Gjennomsnitt Algoritme Filteret


Den bevegelige gjennomsnittet som et filter Det bevegelige gjennomsnittet brukes ofte til utjevning av data i nærvær av støy. Det enkle glidende gjennomsnittet blir ikke alltid gjenkjent som FIT-filteret (Finite Impulse Response), det er det, men det er faktisk et av de vanligste filtre i signalbehandling. Ved å behandle det som et filter, kan det sammenlignes med f. eks. Windowed-sinc filtre (se artiklene på lavpass, høypass og bandpass og bandavvisningsfiltre for eksempler på dem). Den store forskjellen med de filtre er at det bevegelige gjennomsnittet er egnet for signaler som den nyttige informasjonen er inneholdt i tidsdomene. hvorav utjevningsmålinger ved gjennomsnittsverdi er et godt eksempel. Windowed-sinc filtre, derimot, er sterke utøvere i frekvensdomene. med utjevning i lydbehandling som et typisk eksempel. Det er en mer detaljert sammenligning av begge typer filtre i Time Domain vs Frekvensdomenes ytelse av filtre. Hvis du har data som både tid og frekvensdomene er viktige for, kan du kanskje se på Variasjoner på Moving Average. som presenterer en rekke vektede versjoner av det bevegelige gjennomsnittet som er bedre på det. Det bevegelige gjennomsnittet av lengden (N) kan defineres som skrevet som det typisk blir implementert, med den nåværende utgangsprøven som gjennomsnittet av de tidligere (N) - prøver. Sett som et filter, utfører det bevegelige gjennomsnitt en konvolusjon av inngangssekvensen (xn) med en rektangulær puls av lengde (N) og høyde (1N) (for å gjøre området for pulsen, og dermed forsterkningen av filteret , en ). I praksis er det best å ta (N) merkelig. Selv om et glidende gjennomsnitt kan også beregnes ved å bruke et jevnt antall prøver, har det en fordel at forsinkelsen av filteret vil være et heltall antall prøver ved bruk av en merkelig verdi for (N) siden forsinkelsen av et filter med (N) prøvene er nøyaktig ((N-1) 2). Det bevegelige gjennomsnittet kan deretter justeres nøyaktig med de opprinnelige dataene ved å skifte det med et heltall antall prøver. Time Domain Siden det bevegelige gjennomsnittet er en konvolusjon med en rektangulær puls, er frekvensresponsen en sinc-funksjon. Dette gjør det noe som det dobbelte av windowed-sinc filteret, siden det er en konvolusjon med en sinc puls som resulterer i en rektangulær frekvensrespons. Det er denne sync frekvensrespons som gjør det bevegelige gjennomsnittet en dårlig utøver i frekvensdomenet. Det virker imidlertid veldig bra i tidsdomene. Derfor er det perfekt å glatte data for å fjerne støy mens du samtidig holder et raskt trinnsvar (Figur 1). For den typiske Additive White Gaussian Noise (AWGN) som ofte antas, har gjennomsnittlige (N) prøver effekten av å øke SNR med en faktor (sqrt N). Siden støyen for de enkelte prøvene er ukorrelert, er det ingen grunn til å behandle hver prøve forskjellig. Derfor vil det bevegelige gjennomsnittet, som gir hver prøve samme vekt, bli kvitt den maksimale mengden støy for en gitt trinnresponsskarphet. Gjennomføring Fordi det er et FIR-filter, kan det bevegelige gjennomsnittet implementeres gjennom konvolusjon. Det vil da ha samme effektivitet (eller mangel på det) som alle andre FIR-filter. Det kan imidlertid også implementeres rekursivt, på en svært effektiv måte. Det følger direkte fra definisjonen at denne formelen er resultatet av uttrykkene for (yn) og (yn1), det vil si hvor vi legger merke til at forandringen mellom (yn1) og (yn) er at et ekstra uttrykk (xn1N) vises på slutten, mens uttrykket (xn-N1N) er fjernet fra begynnelsen. I praktiske applikasjoner er det ofte mulig å utelate divisjonen med (N) for hvert begrep ved å kompensere for den resulterende gevinsten av (N) på et annet sted. Denne rekursive gjennomføringen vil bli mye raskere enn konvolusjon. Hver ny verdi av (y) kan beregnes med bare to tillegg, i stedet for (N) tilleggene som ville være nødvendige for en enkel implementering av definisjonen. En ting å se etter med en rekursiv implementering er at avrundingsfeil vil samle seg. Dette kan eller ikke kan være et problem for søknaden din, men det innebærer også at denne rekursive implementeringen faktisk vil fungere bedre med et heltall implementering enn med flytende punktnumre. Dette er ganske uvanlig, siden en flytende punktimplementering vanligvis er enklere. Konklusjonen av alt dette må være at du aldri bør undervurdere bruken av det enkle glidende gjennomsnittsfilteret i signalbehandlingsprogrammer. Filter designverktøy Denne artikkelen er utfylt med et filterdesignverktøy. Eksperimenter med forskjellige verdier for (N) og visualiser de resulterende filtrene. Prøv det nå Jeg har egentlig en rekke verdier som dette: Ovennevnte array er forenklet, jeg samler 1 verdi per millisekund i min ekte kode og jeg må behandle utdataene på en algoritme jeg skrev for å finne nærmeste topp før et tidspunkt . Min logikk feiler fordi i mitt eksempel over, er 0.36 den virkelige toppen, men min algoritme vil se bakover og se det aller siste nummeret 0,25 som toppen, da det er en reduksjon til 0,24 før den. Målet er å ta disse verdiene og bruke en algoritme til dem som vil glatte dem ut litt, slik at jeg har mer lineære verdier. (dvs.: Jeg synes at resultatene mine skal være svingete, ikke sjokkerende) Jeg har blitt fortalt å bruke et eksponentielt glidende gjennomsnittsfilter til mine verdier. Hvordan kan jeg gjøre dette? Det er veldig vanskelig for meg å lese matematiske ligninger, jeg har mye bedre med kode. Hvordan behandler jeg verdier i mitt utvalg, og bruker en eksponentiell glidende gjennomsnittlig beregning til selv dem ut spurt 8. februar kl 20:27 For å beregne et eksponentielt glidende gjennomsnitt. du trenger å holde noen stat rundt og du trenger en tuning parameter. Dette krever en liten klasse (forutsatt at du bruker Java 5 eller nyere): Instantiate med decay-parameteren du vil ha (kanskje ta tuning skal være mellom 0 og 1) og bruk deretter gjennomsnittlig () for å filtrere. Når du leser en side om matematisk tilbakevending, trenger du bare å vite når du gjør det til kode, at matematikere liker å skrive indekser i arrays og sekvenser med abonnementer. (De har også et par andre notater, noe som ikke hjelper.) EMA er imidlertid ganske enkel, da du bare trenger å huske en gammel verdi, ingen kompliserte tilstandsarrayer kreves. svarte 8. februar kl 12:42 TKKocheran: Ganske mye. Det er ikke bra når ting kan være enkle (Hvis du starter med en ny sekvens, får du en ny gjennomsnittlig.) Vær oppmerksom på at de første betingelsene i gjennomsnittssekvensen vil hoppe rundt litt på grunn av grenseeffekter, men du får de med andre bevegelige gjennomsnitt også. En god fordel er imidlertid at du kan pakke den bevegelige gjennomsnittlige logikken inn i avvergeren og eksperimentere uten å forstyrre resten av programmet for mye. ndash Donal Fellows 9 Feb 12 kl 0:06 Jeg har det vanskelig å forstå dine spørsmål, men jeg vil prøve å svare uansett. 1) Hvis algoritmen din fant 0,25 i stedet for 0,36, så er det feil. Det er feil fordi det forutsetter en monotonisk økning eller reduksjon (det går alltid opp eller går alltid ned). Med mindre du gjennomsnittlig ALLE dataene dine, er datapunktene dine --- som du presenterer dem --- ikke-lineære. Hvis du virkelig vil finne den maksimale verdien mellom to poeng i tid, skar du matrisen din fra tmin til tmax og finn maksimalt for den subarrayen. 2) Nå er begrepet bevegelige gjennomsnitt veldig enkle: forestill deg at jeg har følgende liste: 1.4, 1.5, 1.4, 1.5, 1.5. Jeg kan glatte det ut ved å ta gjennomsnittet av to tall: 1,45, 1,45, 1,45, 1,5. Legg merke til at første nummer er gjennomsnittet på 1,5 og 1,4 (andre og første tall) den andre (nye listen) er gjennomsnittet på 1,4 og 1,5 (tredje og andre gamle liste) den tredje (nye listen) gjennomsnittet på 1,5 og 1,4 (fjerde og tredje), og så videre. Jeg kunne ha gjort det perioden tre eller fire, eller n. Legg merke til hvordan dataene er mye jevnere. En god måte å se glidende gjennomsnitt på jobben er å gå til Google Finance, velg en aksje (prøv Tesla Motors ganske flyktig (TSLA)) og klikk på technicals nederst i diagrammet. Velg Moving Average med en gitt periode, og eksponentiell glidende gjennomsnitt for å sammenligne forskjellene sine. Eksponentielt glidende gjennomsnitt er bare en annen utbygging av dette, men veier de eldre dataene mindre enn de nye dataene, dette er en måte å forvirre utjevningen mot baksiden. Vennligst les Wikipedia-oppføringen. Så dette er mer en kommentar enn et svar, men den lille kommentarboksen var bare for liten. Lykke til. Hvis du har problemer med matematikken, kan du gå med et enkelt bevegelige gjennomsnitt i stedet for eksponentiell. Så utgangen du får, vil være de siste x-vilkårene delt med x. Ikke testet pseudokode: Vær oppmerksom på at du må håndtere start - og sluttdelene av dataene, siden du klart ikke kan gjennomsnittlig de siste 5 vilkårene når du er på ditt andre datapunkt. Det er også mer effektive måter å beregne dette glidende gjennomsnittet (sum sum - eldste nyeste), men dette er å få konseptet av hva som skjer over. besvart 8. februar kl. 20: 41. Gjennomsnittlig filter (MA filter) Laster inn. Det bevegelige gjennomsnittsfilteret er et enkelt Low Pass FIR-filter (Finite Impulse Response) som vanligvis brukes til å utjevne en rekke samplede datasignaler. Det tar M prøver av inngang av gangen og tar gjennomsnittet av disse M-prøvene og produserer et enkelt utgangspunkt. Det er en veldig enkel LPF-struktur (Low Pass Filter) som er nyttig for forskere og ingeniører å filtrere uønsket støyende komponent fra de tiltenkte dataene. Når filterlengden øker (parameteren M), øker utgangens glatthet, mens de skarpe overgangene i dataene blir stadig stumpere. Dette innebærer at dette filteret har utmerket tidsdomene respons, men en dårlig frekvensrespons. MA-filteret utfører tre viktige funksjoner: 1) Det tar M-inngangspunkter, beregner gjennomsnittet av disse M-punktene og produserer et enkelt utgangspunkt 2) På grunn av beregnede beregninger. filteret introduserer en bestemt mengde forsinkelse 3) Filteret fungerer som et lavpassfilter (med dårlig frekvensdomenerespons og et godt domenerespons). Matlab-kode: Følgende matlab-kode simulerer tidsdomene responsen til et M-punkt Flytende Gjennomsnittlig filter og plotter også frekvensresponsen for ulike filterlengder. Time Domain Response: På den første plottet har vi inngangen som går inn i det bevegelige gjennomsnittsfilteret. Inngangen er støyende og målet vårt er å redusere støyen. Neste figur er utgangsresponsen til et 3-punkts Moving Average-filter. Det kan utledes fra figuren at 3-punkts Flytende Gjennomsnitt-filteret ikke har gjort mye for å filtrere ut støyen. Vi øker filterkranene til 51 poeng, og vi kan se at støyen i utgangen har redusert mye, som er avbildet i neste figur. Vi øker kranen videre til 101 og 501, og vi kan observere at selv om støyen er nesten null, blir overgangene slått ut drastisk (observere skråningen på hver side av signalet og sammenligne dem med den ideelle murveggovergangen i vår innsats). Frekvensrespons: Fra frekvensresponsen kan det hevdes at avrullingen er veldig treg og stoppbåndet demper er ikke bra. Gitt dette stoppbåndet demping, klart, det bevegelige gjennomsnittlige filteret kan ikke skille ett bånd med frekvenser fra en annen. Som vi vet at en god ytelse i tidsdomene resulterer i dårlig ytelse i frekvensdomene, og omvendt. Kort sagt, det bevegelige gjennomsnittet er et usedvanlig godt utjevningsfilter (handlingen i tidsdomene), men et uvanlig dårlig lavpassfilter (handlingen i frekvensdomenet) Eksterne lenker: Anbefalte bøker: Primær sidebjelke

Comments

Popular posts from this blog

10 Pips En Dag Forex Strategi

Flytte Gjennomsnittet Of Momentum Mt4

Forex Profit Matrix System Nedlasting