Sunday, 22 October 2017

Flytting Gjennomsnitt As Lav Pass Filter


Jeg mangerer noe for øyeblikket der jeg tar en mengde verdier over tid fra et maskinvarekompass Dette kompasset er veldig nøyaktig og oppdateres veldig ofte, med det resultat at hvis det jiggles litt, ender jeg med den merkelige verdien som er vilt I motsetning til naboene vil jeg glatte ut disse verdiene. Etter å ha gjort noe å lese rundt, ser det ut til at det jeg vil ha, er et høypassfilter, et lavpasfilter eller et bevegelige gjennomsnitt. Flytende gjennomsnitt kan jeg komme ned med, bare holde en historie om de siste 5 verdiene eller hva som helst, og bruk gjennomsnittet av disse verdiene nedstrøms i koden min, hvor jeg en gang bare brukte den nyeste verdien. Det burde, tror jeg, glatt ut de jiggles pent, men det slår meg som det er sannsynligvis ganske ineffektivt, og dette er sannsynligvis en av de kjente problemene til de riktige programmene som det er en veldig fin Clever Math-løsning. Jeg er imidlertid en av de forferdelige selvlærte programmene uten en formell utdanning i noe selv vagt relatert til CompSci eller Math Lese rundt litt tyder på at dette kan være et høyt eller lavt passfilter, men jeg kan ikke finne noe som forklarer i forståelse for en hack som meg, hvordan effekten av disse algoritmene ville være på en rekke verdier, la alene hvordan matematikken fungerer Svaret som er gitt her, for eksempel, svarer teknisk på spørsmålet mitt, men bare når det gjelder forståelig for de som trolig allerede vet hvordan de skal løse problemet. Det ville være en veldig fin og smart person som faktisk kunne forklare slags problem dette er, og hvordan løsningene fungerer, forståelig for en Arts graduate. asked 21 september 10 på 13 01. Hvis ditt bevegelige gjennomsnitt må være lang for å oppnå den nødvendige utjevningen, og du trenger ikke virkelig hvilken som helst bestemt form for kjernen, så blir du bedre hvis du bruker et eksponentielt forfallende glidende gjennomsnitt. Deretter velger du lite for å være en passende konstant, for eksempel hvis du velger liten 1 - 1 N, vil den ha samme mengde gjennomsnitt som et vindu av størrelse N, men distribueres annerledes over eldre poeng. Uansett, siden den neste verdien av det bevegelige gjennomsnittet bare avhenger av den forrige og dataene dine, må du ikke holde en kø eller noe. Og du kan tenke på dette som å gjøre noe som, vel, Jeg har et nytt poeng, men jeg stoler ikke på det, så jeg skal holde 80 av mitt gamle estimat av målingen, og bare stol på dette nye datapunktet 20 Det er stort sett det samme som å si, vel jeg bare stol på dette nye punktet 20, og jeg skal bruke 4 andre poeng som jeg stoler på i samme mengde, bortsett fra at i stedet for å eksplisitt ta de 4 andre poengene, antar du at gjennomsnittsverdien du gjorde sist var fornuftig, slik at du kan bruke din tidligere work. answered 21 september 10 på 14 27.Hey, jeg vet at dette er 5 år sent, men takk for et fantastisk svar Jeg m arbeider på et spill hvor lyden endres basert på hastigheten din, men på grunn av å kjøre spillet sakte - En datamaskin, hastigheten ville svinge vilt, noe som var fint for styring, men super irriterende i ter ms of sound Dette var en veldig enkel og billig løsning på noe jeg trodde ville være et veldig komplekst problem. Adam Mar 16 15 20 20. Hvis du prøver å fjerne en og annen merkelig verdi, er et lavpassfilter det beste av tre alternativer som du har identifisert lavpasningsfiltre tillater lavhastighetsendringer, for eksempel de som skyldes å rotere et kompass for hånd, mens du avviser høyhastighetsendringer, for eksempel de som skyldes støt på veien, for eksempel. Et glidende gjennomsnitt vil sannsynligvis ikke være tilstrekkelig, siden effekten av et enkelt blip i dataene dine vil påvirke flere påfølgende verdier, avhengig av størrelsen på det bevegelige gjennomsnittsvinduet. Hvis de ulike verdiene enkelt oppdages, kan du til og med være bedre med en glitch - fjerningsalgoritmen som fullstendig ignorerer dem. Her er en gigdiagram for å illustrere. Den første grafen er inngangssignalet, med en ubehagelig glitch. Den andre grafen viser effekten av et 10-sample glidende gjennomsnitt. Den endelige grafen er en kombinasjon av 10- prøve gjennomsnitt og th En enkel gjenkjenningsalgoritme vist ovenfor Når feilen oppdages, blir 10-prøve gjennomsnittet brukt i stedet for den faktiske verdien. Ansatt 21. september 10 kl 13 38. Nøyaktig forklart og bonuspoeng for graven Henry Cooke 22 september 10 klokken 0 50.Vi såg sjelden et godt svar Muis 4 Juni 13 på 9 14. Det bevegelige gjennomsnittet er et lavpassfilter nomenet 21 okt 13 på 19 36. Prøv en løpende streaming median i stedet kert 25. april kl. 22 09. Gjennomsnittlig jeg kan komme ned med, men det ser ut til at det er sannsynligvis ganske ineffektivt. Det er virkelig ingen grunn til at et glidende gjennomsnitt skal være ineffektivt. Du beholder antall datapunkter du vil ha i noen buffer som en sirkulær kø. På hvert nytt datapunkt du pop den eldste verdien og trekke den fra summen, og trykk den nyeste og legg den til summen. Så hvert nytt datapunkt innebærer egentlig bare et pop-trykk, et tillegg og en subtraksjon. Gjennomsnittlig glidende gjennomsnitt er alltid denne skiftende summen divideres med antall verdier i bufferen din. Det blir litt vanskeligere hvis du re mottar data samtidig fra flere tråder, men siden dataene kommer fra en maskinvareenhet som synes svært tvilsom for meg. Åh og også forferdelige selvlærte programmører forene. Det bevegelige gjennomsnittet virket ineffektivt for meg fordi du må lagre buffer av verdier - bedre å bare gjøre litt klare matematikk med inntaksverdi og nåværende arbeidsverdi Jeg tror det er hvordan eksponentiell glidende gjennomsnittlig arbeid En optimalisering jeg har sett for denne typen bevegelige gjennomsnitt innebærer å bruke en fastlengdekø en peker til hvor du er i den køen, og bare pakker pekeren rundt med eller en hvis Voila Ingen dyr skyve pop Kraft til amatørene, bror Henry Cooke 22. september 10 på 0 54. Henry For et glatt gjennomsiktig gjennomsnitt trenger du bare bufferen slik at du vet hvilken verdi som blir poppet når den neste verdien blir presset Når det er sagt, den faste lengden køen en peker du beskriver er akkurat hva jeg mente med sirkulær kø Det er derfor jeg sa det er ikke ineffektivt Hva syntes du jeg mente, og hvis svaret ditt er en matrise som skifter sine verdier tilbake på hver indeksert fjerning som stdvektor i C-brønnen, så er jeg så skadet jeg vil ikke engang snakke med deg lenger Dan Tao 22. september 10 på 1 58. Henry Jeg vet ikke om AS3, men en Java-programmerer har samlinger som CircularQueue til sin disposisjon. Jeg er ikke en Java-utvikler, så jeg er sikker på at det finnes bedre eksempler der ute, det er bare det jeg fant fra et raskt Google-søk, hvilke redskaper nettopp den funksjonaliteten vi snakker om, jeg er ganske sikker på at flertallet av mellomstore og lavt nivå språk med standardbiblioteker har noe lignende, for eksempel det er Queue T Uansett, jeg var filosofi selv, så alt er tilgitt. Dan Tao 22. september 10 på 12 44. Et eksponentielt forfallende glidende gjennomsnitt kan beregnes for hånd med bare trenden hvis du bruker de riktige verdiene. Se for en ide om hvordan du gjør dette raskt med en penn og papir hvis du er ute etter eksponensielt glatt glatt gjennomsnitt med 10 utjevning Men siden du hav ea datamaskin, vil du sannsynligvis gjøre binærforskyvning i motsetning til desimalskifting. På denne måten er alt du trenger en variabel for din nåværende verdi og en for gjennomsnittet. Det neste gjennomsnittet kan da beregnes fra that. answered 21. september 10 på 14 39. der sa teknikken kalt en rekkevidde som virker bra med lavt forekommende falske prøver, forutsatt at bruk av en av filterteknikkene som er nevnt ovenfor, beveger seg gjennomsnittlig, eksponentiell, når du har tilstrekkelig historie en tidskonstant kan du teste den nye innkommende Datamønster for rimelighet, før det legges til beregningen. Enkel kunnskap om den maksimale fornuftige endring av signalet er nødvendig, den raske prøven blir sammenlignet med den siste glattede verdien, og hvis absoluttverdien av denne forskjellen er større enn det tillatte området, blir prøven kastet ut eller erstattet med noen heuristiske, for eksempel en prediksjon basert på skrå differensial eller trend prediksjonsverdien fra dobbel eksponensiell utjevning. ansvaret 30. april 16 ved 6 56. Gjennomsnittlig filter. MovingAverageFilter implementerer et lavpass glidende gjennomsnittlig filter. MovingAverageFilter er en del av Preprocessing Modules. Et eksempel på en signal sinusbølge, tilfeldig støyfiltrert ved hjelp av et bevegelig gjennomsnittsfilter. Det røde signalet er den originale signalstøyen , det grønne signalet er det filtrerte signalet ved hjelp av et glidende gjennomsnittsfilter med en vindustørrelse på 5, og det blå signalet er det filtrerte signalet ved hjelp av et glidende gjennomsnittsfilter med en vindustørrelse på 20. MovingAverageFilter er bra for å fjerne en liten mengde høyfrekvent støy fra et N-dimensjonalt signal. Den største ulempen ved MovingAverageFilter er at for å filtrere ut signifikant høyfrekvent støy, må vinduets størrelse på filteret være stor. Problemet med å ha et stort filtervindu er at dette vil indusere en stor latens i et signal som passerer gjennom filteret, noe som kanskje ikke er fordelaktig for sanntidsapplikasjoner. Hvis du finner ut at du trenger et stort filtervindu til f ilter ut høyfrekvent støy og latens indusert av denne vinduet størrelse er ikke egnet for din sanntids applikasjon, så kan du prøve enten et dobbeltflytende gjennomsnittfilter eller lavpassfilter istedenfor. Eksempelkode. GRT MovingAverageFilter Eksempel Dette eksemplet demonstrerer hvordan du lager og bruker GRT MovingAverageFilter PreProcessing Module. MovingAverageFilter implementerer et lavpass glidende gjennomsnittlig filter. I dette eksempelet oppretter vi en forekomst av en MovingAverageFilter og bruker dette til å filtrere noen dummy data generert fra en sinus bølge tilfeldig støy Testsignalet og filtrerte signaler blir deretter lagret i en fil, slik at du kan plotte resultatene i Matlab, Excel osv. hvis nødvendig. Dette eksempelet viser deg hvordan du skal: - Lag en ny MovingAverageFilter-forekomst med en bestemt vindusstørrelse for en 1 Dimensjonalt signal - Filtrer noen data ved hjelp av MovingAverageFilter - Lagre MovingAverageFilter-innstillingene til en fil - Legg inn MovingAverageFilter-innstillingene fra en fil. inkludere GRT h ved hjelp av navneområde GRT. int hoved int argc const char argv Opprett en ny forekomst av et bevegelig gjennomsnittsfilter med en vindustørrelse på 5 for et 1-dimensjonalt signal MovingAverageFilter filter 5 1. Opprett og åpne en fil for å lagre data-fstreamfilen fil åpen fstream ut. Generer litt data sinusbølge støy og filtrer det dobbelt x 0 const UINT M 1000 Tilfeldig tilfeldig for UINT i 0 I M jeg doble signal sin x tilfeldig getRandomNumberUniform - 0 2 0 2.double filteredValue filter filter signal. file signal t filteredValue endl. x TWOPI double M 10. Lukk filfilen lukk. Lagre filterinnstillingene til et filfilter saveSettingsToFile. Vi kan deretter laste inn innstillingene senere hvis det er nødvendig, filterlastSettingsFromFile. return EXITSUCCESS. MovingAverageFilter fungerer også med et N-dimensjonalt signal. Opprett en ny forekomst av MovingAverageFilter med en vindustørrelse på 10 for et 3-dimensjonalt signal MovingAverageFilter filter 10 3. Verdien du vil filtrere vektor dobbel data 3 data 0 0 Få verdi fra sensor data 1 0 Få verdi fra sensor data 2 0 Få verdi fra sensor. Filtrer signalvektoren, dobbeltfiltrertValuefilterfilterdata. Koderessurser. Gjennomsnittlig filter MA filter. Lading Det bevegelige gjennomsnittsfilteret 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 om gangen og ta gjennomsnittet av de M-samplene og produserer et enkelt utgangspunkt. Det er en veldig enkel LPF Low Pass Filter-struktur som er nyttig for forskere og ingeniører å filtrere uønsket støyende komponent fra de tiltenkte dataene. Hvis filterlengden øker parameteren M blir jevnheten av utgangen økende, mens de skarpe overgangene i dataene blir stadig stumpe. 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-inngang poeng, 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 fungerer som et lavpassfilter med dårlig frekvensdomenerespons og et godt tidsdomenerespons. Matlab-kode. Følgende matlab-kode simulerer tidsdomeneresponsen til et M-punkt-flytende gjennomsnittsfilter og plotter også frekvensresponsen for ulike 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. Response av 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 filteret The 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 Moving Average-filteret ikke har gjort mye for å filtrere ut støyen Vi øker filterkraner til 51 poeng, og vi kan se at støyen i utgangen har redusert mye, som er avbildet i neste figur. Frekvensresponsen for Flytte 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, blir overgangene slått ut 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 være hevdet at avrullingen er veldig treg og stoppbånddempingen ikke er god. 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 Fr Equency domain. External Links. Recommended Books. Primary Sidebar.

No comments:

Post a Comment