Flytte Gjennomsnittet Filter Kode
Frekvensrespons av det kjørende gjennomsnittsfiltret Frekvensresponsen til et LTI-system er DTFT av impulsresponsen. Impulsresponsen av et L-prøve-glidende gjennomsnitt er Siden det bevegelige gjennomsnittlige filteret er FIR, reduserer frekvensresponsen til den endelige summen Vi kan bruke den svært nyttige identiteten til å skrive frekvensresponsen som hvor vi har sluppet minus jomega. N 0 og M L minus 1. Vi kan være interessert i størrelsen på denne funksjonen for å avgjøre hvilke frekvenser som kommer gjennom filteret som ikke er overvåket og som er dempet. Nedenfor er et plott av størrelsen på denne funksjonen for L 4 (rød), 8 (grønn) og 16 (blå). Den horisontale aksen varierer fra null til pi radianer per prøve. Legg merke til at frekvensresponsen i alle tre tilfeller har en lowpass-karakteristikk. En konstant komponent (nullfrekvens) i inngangen passerer gjennom filteret uopprettholdt. Visse høyere frekvenser, som pi 2, elimineres helt av filteret. Men hvis hensikten var å designe et lavpassfilter, har vi ikke gjort det veldig bra. Noen av de høyere frekvensene dempes bare med en faktor på ca 110 (for 16 poeng glidende gjennomsnitt) eller 13 (for firepunkts glidende gjennomsnitt). Vi kan gjøre mye bedre enn det. Ovennevnte tegning ble opprettet av følgende Matlab-kode: omega 0: pi400: pi H4 (14) (1-exp (-iomega4)). (1-exp (-iomega)) H8 (18) iomega8)). (1-exp (-iomega)) H16 (116) (1-exp (-iomega16)) (1-exp (-iomega)) plot (omega, abs (H4) abs H16)) akse (0, pi, 0, 1) Opphavsretts kopi 2000- - University of California, BerkeleyMoving Gjennomsnittlig Filter (MA filter) Loading. 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 tidsdomæneresponsen til et M-punkts-flytende gjennomsnittfilter, og viser også frekvensresponsen for forskjellige 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 sidebarDokumentasjon Dette eksemplet viser hvordan du bruk bevegelige gjennomsnittsfiltre og resampling for å isolere effekten av periodiske komponenter på tidspunktet på timetemperaturen, samt fjerne uønsket linjestøy fra en åpen spenningsmåling. Eksemplet viser også hvordan du kan glatte nivået på et klokke signal mens du beholder kantene ved å bruke et medianfilter. Eksemplet viser også hvordan man bruker et Hampel filter for å fjerne store utjevninger. Motivasjonsutjevning er hvordan vi oppdager viktige mønstre i våre data mens du utelater ting som er ubetydelige (dvs. støy). Vi bruker filtrering for å utføre denne utjevningen. Målet med utjevning er å produsere lave verdiendringer, slik at det er enklere å se trender i våre data. Noen ganger når du undersøker inndata, kan det hende du ønsker å glatte dataene for å se en trend i signalet. I vårt eksempel har vi et sett med temperaturmålinger i Celsius tatt hver time på Logan flyplass for hele januar måned 2011. Merk at vi visuelt kan se effekten som tiden på dagen har på temperaturavlesningene. Hvis du bare er interessert i den daglige temperaturvariasjonen i løpet av måneden, bidrar timelengsfluktene bare med støy, noe som kan gjøre det vanskelig å skille dagens variasjoner. For å fjerne effekten av tidspunktet på dagen, vil vi nå glatte ut dataene våre ved å bruke et glidende gjennomsnittsfilter. Et flytende gjennomsnittsfilter I sin enkleste form tar et glidende gjennomsnittlig filter med lengde N gjennomsnittet av hver N påfølgende bølgeform. For å bruke et glidende gjennomsnittsfilter til hvert datapunkt, konstruerer vi våre koeffisienter for filteret vårt slik at hvert punkt er likevektet og bidrar 124 til det totale gjennomsnittet. Dette gir oss gjennomsnittstemperaturen over hver 24-timers periode. Filterforsinkelse Merk at filtrert utgang forsinkes med ca. tolv timer. Dette skyldes det faktum at vårt bevegelige gjennomsnittlige filter har en forsinkelse. Ethvert symmetrisk filter med lengde N vil ha en forsinkelse på (N-1) 2 prøver. Vi kan rapportere denne forsinkelsen manuelt. Utvinning av gjennomsnittlige forskjeller Alternativt kan vi også bruke det bevegelige gjennomsnittlige filteret for å få et bedre estimat av hvordan tidspunktet på dagen påvirker den totale temperaturen. For å gjøre dette, må du først trekke ut glatte data fra timetemperaturmålingene. Deretter segmenter de forskjellige dataene i dager og tar gjennomsnittet over alle 31 dager i måneden. Utvinning av toppkuvert Noen ganger vil vi også ha et jevnt varierende estimat av hvordan høyde og nedturer av temperatursignalet endres daglig. For å gjøre dette kan vi bruke konvoluttfunksjonen til å koble til ekstreme høyder og nedturer oppdaget over en delmengde av 24-timersperioden. I dette eksemplet sikrer vi at det er minst 16 timer mellom hver ekstrem høy og ekstrem lav. Vi kan også få en følelse av hvordan høyder og nedturer er trending ved å ta gjennomsnittet mellom de to ytterpunktene. Veidede Flytte gjennomsnittlige filtre Andre typer bevegelige gjennomsnittlige filtre veier ikke hver prøve like mye. Et annet vanlig filter følger binomial utvidelsen av (12,12) n Denne typen filter tilnærmer en normal kurve for store verdier på n. Det er nyttig for å filtrere ut høyfrekvent støy for små n. For å finne koeffisientene for binomialfilteret, konvolver 12 12 med seg selv og deretter iterativt konvolver utgangen med 12 12 et foreskrevet antall ganger. I dette eksemplet bruker du fem totale iterasjoner. Et annet filter som ligner på det gaussiske ekspansjonsfilteret er eksponentiell glidende gjennomsnittsfilter. Denne typen vektet glidende gjennomsnittsfilter er enkelt å konstruere og krever ikke en stor vindusstørrelse. Du justerer et eksponentielt vektet glidende gjennomsnittlig filter med en alfaparameter mellom null og en. En høyere verdi av alpha vil ha mindre utjevning. Zoom inn på avlesningene i en dag. Velg ditt landAnsatteSimple glidende gjennomsnitt GjennomsnittSimple glidende gjennomsnitt Du oppfordres til å løse denne oppgaven i henhold til oppgavebeskrivelsen, ved hjelp av hvilket som helst språk du kanskje kjenner. Beregner det enkle glidende gjennomsnittet av en rekke tall. Opprett en stateful funksjonsklasseinstans som tar en periode og returnerer en rutine som tar et tall som argument og returnerer et enkelt bevegelige gjennomsnitt av sine argumenter så langt. Et enkelt glidende gjennomsnitt er en metode for å beregne et gjennomsnitt av en strøm av tall ved å bare gjennomsnitts de siste 160 P 160 tallene fra strømmen, 160 hvor 160 P 160 er kjent som perioden. Det kan implementeres ved å kalle en initialiseringsrutine med 160 P 160 som argument 160 I (P) 160, som deretter skal returnere en rutine som når det kalles med individuelle suksessive medlemmer av en strøm av tall, beregner gjennomsnittet av (opp til), de siste 160 P 160 av dem, lar vi ringe denne 160 SMA (). Ordet 160 stateful 160 i oppgavebeskrivelsen henviser til behovet for 160 SMA () 160 for å huske visse opplysninger mellom samtaler til den: 160 Perioden, 160 P 160 En bestilt beholder med minst de siste 160 P 160 tallene fra hver av sine individuelle samtaler. Statlig 160 betyr også at etterfølgende samtaler til 160 I (), 160 initialisereren, 160 skal returnere separate rutiner som gjør 160 ikke 160 delte lagrede tilstander, slik at de kan brukes på to uavhengige datastrømmer. Pseudo-kode for en implementering av 160 SMA 160 er: Denne versjonen bruker en vedvarende kø for å holde de nyeste p-verdiene. Hver funksjon som returneres fra init-moving-gjennomsnittet har sin tilstand i et atom som holder en køverdi. Denne implementeringen bruker en sirkulær liste for å lagre tallene i vinduet ved begynnelsen av hver iterasjonspeker refererer til listecellen som holder verdien bare flyttet ut av vinduet og erstattes med den verdiskapende verdien. Bruke en Closure-redigering For øyeblikket kan denne sma ikke være nok fordi den tildeler en lukning på bunken. Noen rømningsanalyser kan fjerne heapfordelingen. Bruke en Struktur-redigering Denne versjonen unngår brønnallokering av lukkingen som holder dataene i stakkrammen til hovedfunksjonen. Samme utgang: For å unngå at floating point-tilnærmingene fortsetter å vokse opp og vokse, kan koden utføre en periodisk sum på hele sirkulær køarrangementet. Denne implementeringen produserer to (funksjon) objekter delingstilstand. Det er idiomatisk i E for å skille inngang fra utgang (les fra skriv) i stedet for å kombinere dem til en gjenstand. Strukturen er den samme som implementeringen av Standard DeviationE. Eliksirprogrammet nedenfor genererer en anonym funksjon med en innebygd periode p, som brukes som perioden for det enkle glidende gjennomsnittet. Kjøringsfunksjonen leser numerisk inngang og overfører den til den nyopprettede anonyme funksjonen, og kontrollerer deretter resultatet til STDOUT. Utgangen vises nedenfor, med gjennomsnittet, etterfulgt av gruppert inngang, som danner grunnlaget for hvert glidende gjennomsnitt. Erlang har nedleggelser, men uutviklede variabler. En løsning er da å bruke prosesser og en enkel melding som passerer basert API. Matrix-språk har rutiner for å beregne glidningsavstandene for en gitt rekkefølge av elementer. Det er mindre effektivt å sløyfe som i følgende kommandoer. Fortløpende ber om en inngang I. som legges til enden av en liste L1. L1 kan bli funnet ved å trykke på 2ND1, og det finnes gjennomsnitt i ListOPS Trykk ON for å avslutte programmet. Funksjon som returnerer en liste som inneholder gjennomsnittlig data for det medfølgende argumentet Program som returnerer en enkel verdi ved hver påkalling: listen er listen som gjennomsnitt: p er perioden: 5 returnerer gjennomsnittslisten: Eksempel 2: Bruke programmet movinav2 (jeg , 5) - Initialisere glidende gjennomsnittlig beregning, og definer periode på 5 movinav2 (3, x): x - nye data i listen (verdi 3), og resultatet lagres på variabel x og vises movinav2 (4, x) : x - nye data (verdi 4), og det nye resultatet blir lagret på variabel x, og vises (43) 2. Beskrivelse av funksjonen movinavg: variabel r - er resultatet (gjennomsnittslisten) som vil bli returnert variabel i - er indeksvariabelen, og den peker mot slutten av underlisten listen er i gjennomsnitt. variabel z - en hjelpesvariabel Funksjonen bruker variabel i for å bestemme hvilke verdier av listen som skal vurderes i neste gjennomsnittlige beregning. Ved hver iterasjon peker variabel jeg på den siste verdien i listen som vil bli brukt i gjennomsnittlig beregning. Så vi trenger bare å finne ut hvilken vil være den første verdien i listen. Vanligvis må du vurdere p-elementer, så det første elementet vil være det som er indeksert av (i-p1). Men ved de første iterasjonene vil denne beregningen vanligvis være negativ, slik at følgende ligning vil unngå negative indekser: maks (i-p1,1) eller, ordne ekningen, maks (i-p, 0) 1. Men antall elementer på de første iterasjonene vil også være mindre, den riktige verdien vil være (sluttindeks - startindeks 1) eller, ordne ligningen, (i - (maks (ip, 0) 1) 1) og deretter , (i-max (ip, 0)). Variabel z har den vanlige verdien (max (ip), 0) slik at begynnelsesindeksen vil være (z1) og tallfeltene vil være (iz) midt (liste, z1, iz) returnere listen over verdi som vil være gjennomsnittlig sum .) vil summe dem sum (.) (iz) ri vil gjennomsnittlig dem og lagre resultatet på riktig sted i resultatlisten fp1 oppretter en delvis applikasjon som fastsetter (i dette tilfellet) andre og tredje parametere
Comments
Post a Comment