Jeg har i hovedsak en rekke verdier som dette. Ovenstående matrise er oversimplified, 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 logikken feiler fordi i mitt eksempel ovenfor er 0 36 den virkelige toppen, men min algoritme vil se bakover og se det siste tallet 0 25 som toppen, da det er en reduksjon til 0 24 før det. Målet er å ta disse verdiene og bruk en algoritme til dem som vil glatte dem ut litt, slik at jeg har mer lineære verdier, det vil si at resultatene mine skal være svingete, ikke ekgedy. Jeg har blitt fortalt å bruke et eksponentielt glidende gjennomsnittsfilter til mine verdier. Hvordan kan jeg gjør dette Det er veldig vanskelig for meg å lese matematiske ligninger. Jeg behandler mye bedre med kode. Hvordan behandler jeg verdier i mitt array, og bruker en eksponentiell glidende gjennomsnittlig beregning for å utjevne dem ut. Skrevet 8. februar 12 kl 20 27. For å beregne et eksponentielt glidende gjennomsnitt må du holde noen tilstand rundt og du trenger en innstillingsparameter Dette krever en liten klasse forutsatt at du bruker Java 5 eller nyere. Installer med nedbrytingsparameteren du vil ha, må innstille skal være mellom 0 og 1 og bruk deretter gjennomsnittlig for å filtrere. Når du leser en side på noen matematiske gjentagelse, alt du virkelig trenger å vite når du setter det i kode er at matematikere liker å skrive indekser i arrays og sekvenser med abonnementer. De har også noen andre notasjoner, men det hjelper ikke. EMA er ganske enkelt som du bare trenger å huske en gammel verdi ingen kompliserte statlige arrays required. answered 8 februar 12 på 20 42. TKKocheran Ganske mye Er det ikke bra når ting kan være enkelt Hvis du starter med en ny sekvens, får du en ny bruker. Legg merke til at de første begrepene i gjennomsnittlig sekvens 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 gjennombrukeren og eksperimentere uten å forstyrre t han hviler på programmet for mye Donal Fellows 9 februar 12 på 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 som alltid går opp eller alltid går ned, med mindre du gjennomsnittlig ALLE dine data, dine datapunkter --- som du presenterer dem --- er ikke-lineære Hvis du virkelig vil finne maksimum verdi mellom to poeng i tid, så skjær din rekkefølge fra tmin til tmax og finn maksimum for det subarray.2 Nå er begrepet bevegelige gjennomsnitt veldig enkle å forestille 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 det første tallet er gjennomsnittet av 1 5 og 1 4 sekund og første nummer den andre nye listen er gjennomsnittet av 1 4 og 1 5 tredje og andre gamle liste den tredje nye listen gjennomsnittet 1 5 og 1 4 fjerde og tredje, og så videre kunne jeg har 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 et lager, prøv Tesla Motors ganske flyktige TSLA og klikk på technicals nederst på diagrammet Velg Moving Average med en gitt periode, og eksponentiell glidende gjennomsnitt for å sammenligne forskjellene deres. 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 glidende gjennomsnitt i stedet for eksponentiell. Så utdataene du får vil være de siste x-vilkårene delt med x Ikke-testet pseudokode. Merk at du må håndtere start - og sluttdelene av dataene, siden du tydeligvis ikke kan t gjennomsnitts de siste 5 vilkårene når du er på ditt andre datapunkt. , den re er mer effektive måter å beregne denne glidende gjennomsnittlige summen - eldste nyeste, men dette er for å få konseptet om hva som skjer over. ansvaret 8 februar 12 kl 20 41. Flytende gjennomsnitt som et filter. Det bevegelige gjennomsnittet brukes ofte for utjevning av data i nærvær av støy Det enkle glidende gjennomsnittet blir ikke alltid gjenkjent som Finite Impulse Response FIR-filteret som det er, mens det faktisk er et av de vanligste filtre i signalbehandling. Behandlingen som et filter gjør det mulig å sammenligne det med, for eksempel windowsed-sinc filtre se artiklene på lavpass høy-pass og band-pass og band-reject filtre 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 hvor utjevningsmålinger ved gjennomsnittsverdi er et førsteklasses eksempel Windowed-sinc filtre, derimot, er sterke utøvere i frekvensdomene med utjevning i lydbehandling som en typografi l eksempel Det er en mer detaljert sammenligning av begge typer filtre i Time Domain vs Frekvensdomainprestasjon for filtre Hvis du har data som både tid og frekvensdomene er viktige for, kan du kanskje se på Variasjoner på Flytende gjennomsnitt som presenterer en rekke vektede versjoner av det bevegelige gjennomsnittet som er bedre på det. Flytende gjennomsnitt av lengde N kan defineres som. skrivet som det typisk er implementert, med den nåværende utgangssammen som gjennomsnittet av de tidligere N-eksemplene Sett som et filter utfører det bevegelige gjennomsnitt en konvolusjon av inngangssekvensen xn med en rektangulær puls med lengde N og høyde 1 N for å gjøre pulsområdet, og dermed forsterkningen av filteret, en I praksis er det er 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 blir et helt antall prøver, siden forsinkelsen av et filter wi th N-eksempler er nøyaktig N-1 2 Det bevegelige gjennomsnittet kan deretter justeres nøyaktig med de opprinnelige dataene ved å skifte det med et helt antall prøver. Tidspunkt Domene. Siden det bevegelige gjennomsnittet er en konvolusjon med en rektangulær puls, er frekvensresponsen en sinc-funksjon Dette gjør det til 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 sinc-frekvensresponsen som gjør det bevegelige gjennomsnittet en dårlig utøver i frekvensdomene Det virker imidlertid veldig bra i tidsdomene. Derfor er det perfekt å glatte data for å fjerne støy samtidig som de fortsatt holder et raskt trinnsvar. Figur 1.Figur 1 Glatting med et glidende gjennomsnittsfilter. For det typiske additivet Hvit Gaussisk støy AWGN som ofte antas, gjennomsnittlig N prøver medfører økning av SNR med en faktor på sqrt N Siden støyen for de enkelte prøvene er ukorrelert, er det ingen grunn til å behandle e Derfor er det bevegelige gjennomsnittet, som gir hver prøve samme vekt, kvitt den maksimale mengden støy for en gitt trinnresponsskarphet. Fordi det er et FIR-filter, kan det bevegelige gjennomsnittet gjennomføres gjennom konvolusjon. Det vil da har samme effektivitet eller mangel på det som noe annet FIR-filter. Det kan imidlertid også implementeres rekursivt, på en meget effektiv måte. Det følger direkte fra definisjonen. Denne formelen er resultatet av uttrykkene for yn og yn 1, jeg merker at forandringen mellom yn 1 og yn er at en ekstra term xn 1 N vises på slutten, mens uttrykket x nN 1 N fjernes fra begynnelsen. I praktiske anvendelser er det ofte mulig å gå ut av divisjonen med N for hvert begrep ved å kompensere for den resulterende gevinsten av N på et annet sted. Denne rekursive implementeringen vil være mye raskere enn konvolusjon. Hver ny verdi av y kan beregnes med bare to tillegg, i stedet for de N tilleggene som ville være nødvendig for en enkel implementering av definisjonen En ting å se etter med en rekursiv implementering er at avrundingsfeil vil samle. Dette kan eller ikke er et problem for søknaden din, men det innebærer også at denne rekursive implementeringen faktisk vil fungere bedre med en heltall implementering enn med flytende punkt tall Dette er ganske uvanlig, siden en flytende punkt implementering er vanligvis enklere. Konklusjonen av alt dette må være at du aldri bør undervurdere bruken av det enkle glidende gjennomsnittsfilteret i signalbehandling applikasjoner. Filtrering Design Verktøy. Denne artikkelen er supplert med et filterdesignverktøy Eksperiment med forskjellige verdier for N og visualiser de resulterende filtre Prøv det nå. Det er mulig å implementere et bevegelige gjennomsnitt i C uten at det er behov for et vindu av prøver. Jeg har funnet ut at jeg kan optimalisere litt ved å velge en vindusstørrelse som har en kraft på to for å tillate bitskifte i stedet for å dele, men ikke trenger ga buffer ville være hyggelig Er det en måte å uttrykke et nytt, glidende gjennomsnittsresultat bare som en funksjon av det gamle resultatet og den nye prøven. Finn et eksempel som beveger gjennomsnittet, over et vindu på 4 prøver å være. Legg til nytt eksempel eA glidende gjennomsnitt kan implementeres rekursivt, men for en nøyaktig beregning av det bevegelige gjennomsnittet må du huske den eldste innsatsprøven i summen, dvs. a i ditt eksempel. For et lengde N glidende gjennomsnitt beregner du hvor yn er utgangssignalet og xn er inngangssignal Eq 1 kan skrives rekursivt som. Så du må alltid huske prøven x nN for å beregne 2. Som påpekt av Conrad Turner, kan du bruke et uendelig langt eksponensielt vindu i stedet, som gjør det mulig å beregne utdataene bare fra tidligere utgang og nåværende input. but dette er ikke et standard uvevet glidende gjennomsnitt, men et eksponentielt vektet glidende gjennomsnitt, hvor prøvene i det siste får en mindre vekt, men i det minste i teorien glemmer du aldri det som er uklar hts blir bare mindre og mindre for prøver langt i fortiden. Jeg implementerte et glidende gjennomsnitt uten individuelt elementminne for et GPS-sporingsprogram jeg skrev. Jeg starter med 1 prøve og deler med 1 for å få gjeldende avg. Jeg legger til en annen prøve og divider med 2 til den nåværende avg. Dette fortsetter til jeg kommer til lengden av gjennomsnittet. Hver gang etterpå legger jeg til den nye prøven, får gjennomsnittet og fjerner det gjennomsnittet fra totalen. Jeg er ikke matematiker, men dette virket som en god måte å gjøre det på. Jeg skjønte at det ville slå magen til en ekte matte fyr, men det viser seg at det er en av de aksepterte måtene å gjøre det. Og det fungerer bra Bare husk at jo lengre lengre jo tregere det følger med hva du vil følge Det kan ikke hende det meste av tiden, men når du følger satellitter, hvis du er treg, kan stien være langt fra den faktiske posisjonen, og det vil se dårlig. Du kan ha et mellomrom mellom lørdags og trailing prikker jeg valgte en lengde på 15 oppdatert 6 ganger per minutt til få tilstrekkelig utjevning og ikke komme for langt fra den faktiske lette posisjonen med den glatte stien dots. answered 16 november 16 kl 23 03.initialiser totalt 0, teller 0 hver gang du ser en ny verdi. Deretter legger du inn en ny scanf, en legger til total newValue, en økningstall, en deling av gjennomsnittlig total telling. Dette ville være et bevegelige gjennomsnitt over alle innganger. For å beregne gjennomsnittet over bare de siste 4 inngangene, ville det kreve 4 inputvariables, kanskje kopiering av hvert inngang til en eldre inputvariable og deretter beregning av den nye bevegelsen gjennomsnittlig som summen av de 4 inputvariablene divideres med 4 høyre skift 2 ville være bra dersom alle inngangene var positive for å gjøre gjennomsnittlig beregning. ansvaret 3. februar klokken 4 06. Det vil faktisk beregne det totale gjennomsnittet og IKKE det glidende gjennomsnittet Som tellingen blir større effekten av en ny inngangsprøve blir forsinkende liten Hilmar 3. februar kl 13 13. Ditt svar.2017 Stack Exchange, Inc.
No comments:
Post a Comment