Wednesday 22 November 2017

Flytting Gjennomsnitt Algoritme Filteret


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 bevegelige gjennomsnittlige sum summen på - eldste nyeste, men dette er for å få konseptet om hva som skjer over. Ansatt 8. februar kl. 20 41. Er det mulig å implementere et glidende gjennomsnitt i C uten behov for et vindu av prøver. Jeg har funnet ut at jeg kan optimalisere litt ved å velge en vindustørrelse som er en kraft av to for å tillate litt skifting i stedet for å dele, men ikke å ha en 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 på glidende gjennomsnitt, 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 eksempelet ditt For et lengde N glidende gjennomsnitt beregner du hvor yn er utgangssignalet og xn er inngangssignalet. Eq 1 kan skrives rekursivt som. So du må alltid huske prøven x nN i for å beregne 2. Som påpekt av Conrad Turner, kan du bruke et uendelig langt eksponensielt vindu i stedet, noe som gjør det mulig å beregne utgangen bare fra tidligere utgang og nåværende input. but dette er ikke et standard uvevet glidende gjennomsnitt, men en eksponentielt vektet glidende gjennomsnitt, hvor prøver tidligere i det siste får en mindre vekt, men i det minste i teorien glemmer du aldri alt vekter blir bare mindre og mindre for prøver langt i fortiden. Jeg implementerte et glidende gjennomsnitt uten individuelt elementminne for en GPS sporingsprogram jeg skrev. Jeg starter med 1 prøve og deler med 1 for å få gjeldende avg. I så legger jeg til prøve og deler med 2 til den nåværende avg. This fortsetter til jeg kommer til lengden av gjennomsnittet. Hver gang etterpå legger jeg til i 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 høyere lengden jo tregere følger det du vil følge. Det kan ikke hende det meste av tiden, men når du følger satellitter, kan du være treg, hvis du er treg. langt fra den faktiske posisjonen og det vil se dårlig Du kan ha et mellomrom mellom lørdene og de etterfølgende punktene jeg valgte en lengde på 15 oppdatert 6 ganger per minutt for å få tilstrekkelig utjevning og ikke komme for langt fra den faktiske lette posisjonen med glatt trail dots. answered 16 november 16 ved 23 03.initialiser totalt 0, teller 0 hver gang du ser en ny verdi. Deretter legger du til en ny skanning, en legger til totalt nyttValue, ett inkrementstall, en dividerer gjennomsnittlig total telling. Dette ville være et glidende gjennomsnitt over alle inputs. To beregne gjennomsnittet over bare de siste 4 inngangene, ville det kreve 4 inputvariables, kanskje kopiere hver inngang til en eldre inputvariable, og deretter beregne det nye glidende gjennomsnittet som summen av de 4 inputvariablene, delt med 4 høyre skift 2 ville være bra hvis alle inngangene var positive for å gjøre gjennomsnittlig beregning. ansvaret 3. februar kl. 4 06. Det vil faktisk beregne det totale gjennomsnittet og IKKE det bevegelige gjennomsnittet. Etter hvert som tellingen blir større, blir virkningen av en ny inngangsprøve forsvunnet liten. Hilmar 3. februar kl. 15 på 13 53. Ditt Svar.2017 Stack Exchange, Inc. Moving Gjennomsnittlig Filter MA filter. Lading Det glidende gjennomsnittlige filteret er et enkelt Low Pass FIR Finite Impulse Response-filter som vanligvis brukes til å utjevne en rekke samplede datasignaler. Det tar M prøver av inngang på en gang og ta gjennomsnittet av disse M-prøvene og produserer et enkelt utgangspunkt. Det er en veldig enkel LPF Low Pass Filter-struktur som kommer til nytte for forskere og ingeniører å filtrere uønsket støyende komponent fra de tiltenkte dataene. Hvis filterlengden øker parameter M jevnheten av utgangen øker, mens de skarpe overgangene i dataene blir stadig stumpe Dette innebærer at dette filteret har utmerket tidsdomene respons, men en dårlig frekvensreserve ponse. 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 beregningsberegninger innfører filteret en bestemt mengde forsinkelse 3 Filteret virker som et lavpassfilter med dårlig frekvensdomenerespons og et godt tidsdomenesvar. Matlab-kode. Følgende matlab-kode simulerer tidsdomene-responsen til et M-punkts-flytende gjennomsnitt-filter og plotter også frekvensresponsen for forskjellige filterlengder. Tid Domain Response. Input til MA filter.3-punkts MA filter output. Input til Moving gjennomsnittlig filter. Response av 3 poeng Moving gjennomsnittlig filter.51-punkts MA filter output.101-punkts MA filter output. Response av 51-punkts Moving gjennomsnittlig filter. Svar på 101-punkts Moving gjennomsnittlig filter.501-punkts MA filter output. Response på 501 poeng Moving gjennomsnittlig filter. On den første plottet, har vi inngangen som går inn i det bevegelige gjennomsnittet filter Innspillet er støyende og vårt mål er å redusere støyen Neste figur er utgangsresponsen til et 3-punkts Moving Average-filter. Det kan utledes fra figuren at 3-punkts Moving Average-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. Frequency Response for Moving gjennomsnittlige filtre av forskjellige lengder. Vi øker kranene videre til 101 og 501, og vi kan observere at selv om støyen er nesten null, overgangene er utjevnet, drastisk observere skråningen på hver side av signalet og sammenligne dem med den ideelle murveggovergangen i vårt input. Frequency Response. From frekvensresponset kan det hevdes at roll - Av er veldig treg og stoppbånddempingen er ikke bra. Gitt denne stoppbånddempingen, klart, det bevegelige gjennomsnittlige filteret kan ikke skille ett bånd av 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 er handlingen i frekvensdomenet. Eksterne lenker. Anbefalte bøker. Primary Sidebar.

No comments:

Post a Comment