Tuesday 31 October 2017

Flytting Gjennomsnitt Filter I Matlab


Last ned movAv m se også movAv2 - en oppdatert versjon som tillater vekting. Beskrivelse Matlab inkluderer funksjoner som kalles movavg og tsmovavg-tidsserier som beveger gjennomsnittet i Financial Toolbox, movAv er designet for å replikere grunnleggende funksjonaliteten til disse. Koden her gir et godt eksempel på å administrere indekser i looper som kan være forvirrende til å begynne med Jeg har bevisst holdt koden kort og enkel å holde denne prosessen klar. MovAv utfører et enkelt glidende gjennomsnitt som kan brukes til å gjenopprette bråkete data i noen situasjoner. Det virker ved å ta en gjennomsnittlig av inngangen y over et glidende tidvindu, hvis størrelse er spesifisert av n Jo større n er, desto større er utjevningen av effekten av n i forhold til lengden på inngangsvektoren y og effektivt vel, slik skaper et lavpassfrekvensfilter - se eksempler og overvejelser. Fordi mengden av utjevning som tilbys av hver verdi av n er i forhold til lengden på inngangsvektoren, er den alltid verdt teste forskjellige verdier for å se hva som er relevant Husk også at n poeng går tapt på hvert gjennomsnitt hvis n er 100, de første 99 punktene i inngangsvektoren inneholder ikke nok data for et gjennomsnitt på 100pt Dette kan unngås noe ved å stable gjennomsnitt, for Eksempel, sammenligne koden og grafen nedenfor et antall vinduer med gjennomsnittlig lengde. Legg merke til hvor glatt 10 10pt er sammenlignet med et enkelt 20pt gjennomsnitt. I begge tilfeller går 20 poeng av data totalt. Opprett xaxis x 1 0 01 5 Generer støystøyReps 4 støy repmat randn 1, ceil numel x noiseReps, noiseReps, 1 støy omforming støy, 1, lengde støy noiseReps Generer ydata støy y exp x 10 støy 1 lengde x Perfrom gjennomsnitt y2 movAv y, 10 10 pt y3 movAv y2, 10 10 10 pt y4 movAv y 20 20 pt y5 movAv y 40 40 pt y6 movAv y, 100 100 pt Plottfigur plot x, y, y2, y3, y4, y5, y6 legend Raw data, 10pt glidende gjennomsnitt, 10 10pt, 20pt, 40pt, 100pt xlabel x ylabel y tittel Sammenligning av bevegelige gjennomsnitt. mVaV m koden gjennomløpsfunksjon utgang movAv y, n Den første linjen definerer funksjonens navn, innganger og utganger Inngangen x skal være en vektor med data for å utføre gjennomsnittet på, n skal være antall poeng som skal utføre gjennomsnittet over utdata vil inneholde gjennomsnittlig data returnert av funksjonen. Forelegge utgangseffekt NaN 1, numel y Finn midtpunkt for n midPoint-runde n 2 Funksjonens hovedarbeid er gjort i forløp, men før start blir to ting forberedt Fir Stly utgangen er forhåndsallokert som NaNs, dette tjente to formål. For det første er forallokering generelt god praksis, da det reduserer minnesjonglingen Matlab må gjøre, for det andre gjør det veldig enkelt å sette gjennomsnittlig data i en utgang i samme størrelse som inngangsvektoren Dette betyr at samme xaxis kan brukes senere for begge, noe som er praktisk for plotting, alternativt kan NaNs fjernes senere i en linje med kodeutgangsproduksjon. Den variable midpoint vil bli brukt til å justere dataene i utgangsvektoren Hvis n 10, vil 10 poeng gå tapt fordi for de første 9 poengene til inngangsvektoren er det ikke nok data til å ta et 10-punkts gjennomsnitt. Da utgangen vil være kortere enn inngangen, må den justeres riktig midpoint vil brukes, slik at en lik mengde data går tapt i starten og slutten, og inngangen holdes i samsvar med utgangen av NaN buffere opprettet ved preallokering av output. for en 1 lengde y - n Finn indeksområde for å ta gjennomsnitt over abban Beregn gjennomsnittlig produksjon a midPoint betyr yab-ende I selve for-linjen blir et gjennomsnitt tatt over hvert påfølgende segment av inngangen. Sløyfen vil løpe for en som er definert som 1 opp til lengden på inngangen y, minus dataene som vil gå tapt n Hvis inngangen er 100 poeng lang og n er 10, løkken vil løpe fra en 1 til 90. Dette betyr at den første indeksen av segmentet blir i gjennomsnitt Den andre indeksen b er bare en n-1 Så på den første iterasjonen, en 1 n 10 så b 11-1 10 Det første gjennomsnittet blir tatt over yab eller x 1 10 Gjennomsnittet av dette segmentet, som er en enkelt verdi, lagres i utgang ved indeks a midPoint eller 1 5 6. På den andre iterasjonen , en 2 b 2 10-1 11 slik at gjennomsnittet blir tatt over x 2 11 og lagret i utgang 7 På den siste iterasjonen av sløyfen for en inngang på lengde 100, en 91 b 90 10-1 100 slik at midlet er tatt over x 91 100 og lagret i utgang 95 Dette etterlater produksjonen med totalt n 10 NaN-verdier ved indeks 1 5 og 96 100. Eksempler og overveier Flytte gjennomsnitt er nyttige i noen situasjoner, men de ikke alltid det beste valget Her er to eksempler hvor de ikke nødvendigvis er optimale. Mikrofonkalibrering Dette datasettet representerer nivåene av hver frekvens produsert av en høyttaler og innspilt av en mikrofon med kjent lineær respons. Høyttalerenes utgang varierer med frekvens, men vi kan korrigere for denne variasjonen med kalibreringsdataene - utgangen kan justeres på nivå for å ta hensyn til svingningene i kalibreringen. Merk at rådataene er støyende - dette betyr at en liten endring i frekvens ser ut til å kreve en stor, uregelmessig, endring i nivå for å regne for Er dette realistisk Eller er dette et produkt av opptaksmiljøet Det er i dette tilfelle rimelig å bruke et glidende gjennomsnitt som jevner ut nivåfrekvenskurven for å gi en kalibreringskurve som er litt mindre uregelmessig Men hvorfor er det ikke optimal i dette eksempelet. Flere data ville være bedre - flere kalibreringer går i gjennomsnitt sammen vil ødelegge støyen i systemet så lenge det er kjørt dom og gi en kurve med mindre subtile detaljer tapt. Det bevegelige gjennomsnittet kan kun omtrentliggjøre dette, og kan fjerne noen høyere frekvensdips og topper fra kurven som virkelig eksisterer. Sine bølger Med et glidende gjennomsnitt på sinusbølger fremheves to punkter. Den generelle problemet med å velge et rimelig antall poeng for å utføre gjennomsnittet over. Det er enkelt, men det er mer effektive metoder for signalanalyse enn gjennomsnittlig oscillerende signaler i tidsdomene. I denne grafen er den opprinnelige sinusbølge plottet i blått Støy er lagt til og plottet som oransje kurve Et glidende gjennomsnitt utføres på forskjellige antall poeng for å se om den opprinnelige bølgen kan gjenvinnes. 5 og 10 poeng gir rimelige resultater, men ikke fjern støyen helt, hvor så større antall poeng begynner å miste amplitudedetaljene da gjennomsnittet strekker seg over forskjellige faser, husk bølgen oscillerer rundt null, og mener -1 -1 0. En alternativ tilnærming ville være å konstruere et lavpassfilter enn det som kan være anvendt på signalet i frekvensdomenet, jeg kommer ikke til å gå i detalj som det går utover denne artiklens omfang, men da støyen er betydelig høyere frekvens enn bølgenees grunnfrekvens, ville det være ganske enkelt i dette tilfelle å konstruere et lavpassfilter enn det som fjerner høyfrekvent støy. Utarbeidet onsdag 08 oktober 2008 20 04 Sist oppdatert torsdag 14. mars 2013 01 29 Skrevet av Batuhan Osmanoglu Hits 41584. Gjennomsnittlig i Matlab. Ofte finner jeg meg selv i behov av gjennomsnittlig dataene jeg må redusere støyen litt skrev jeg par funksjoner for å gjøre akkurat det jeg vil, men matlabs innebygde filterfunksjon fungerer ganske bra også her Jeg skal skrive om 1D og 2D gjennomsnitt av data.1D-filteret kan være realisert ved hjelp av filterfunksjonen Filterfunksjonen krever minst tre inngangsparametre, tellerkoeffisienten for filteret b, nevnerkoeffisienten for filteret a og dataene X selvfølgelig. Et løpende gjennomsnittfilter kan defineres d ganske enkelt. For 2D-data kan vi bruke Matlab s filter2-funksjonen. For mer informasjon om hvordan filteret fungerer, kan du skrive. Her er en rask og skitten implementering av et 16-med-16-glidende gjennomsnittsfilter. Først må vi definere filteret Siden alt vi ønsker er like bidrag fra alle naboer, kan vi bare bruke de funksjonene. Vi deler alt med 256 16 16 siden vi ikke vil endre signalets generelle nivå. For å bruke filteret kan vi bare si følgende. Nedenfor er resultatene for fase av et SAR-interferogram I dette tilfellet er området i Y-aksen, og Azimuth er kartlagt på X-aksen. Filtret var 4 piksler bredt i rekkevidde og 16 piksler bredt i Azimuth. Moving Average Function. result flytende data, vindu, dim, beregner alternativet et sentrert glidende gjennomsnitt av datamatrisedataene ved hjelp av en vindusstørrelse angitt i vinduet i dim dimensjon, ved hjelp av algoritmen som er angitt i alternativet Dim og alternativet er valgfrie innganger og vil standard til 1.Dim og alternativet kan valgfrie innganger hoppes over en lette eller kan erstattes med en For eksempel flytende data, vil vinduet gi de samme resultatene som movingmean data, vindu, 1,1 eller movingmean data, vindu,, 1.Inndata matrisestørrelse og dimensjon begrenses bare av maksimal matrisestørrelse for deg plattform Vinduet må være et heltall og skal være merkelig Hvis vinduet er jevnt, blir det avrundet til neste lavere odde tall. Funksjon beregner det bevegelige gjennomsnittet som inkorporerer et senterpunkt og vindu-1 2 elementer før og etter i den angitte dimensjonen Ved kantene av matrisen blir antall elementer før eller etter redusert slik at den faktiske vindustørrelsen er mindre enn det angitte vinduet. Funksjonen er delt inn i to deler, en 1d-2d-algoritme og en 3d-algoritme Dette ble gjort for å optimalisere løsningshastighet, spesielt i mindre matriser i e.1000 x 1 Videre er flere forskjellige algoritmer til 1d-2d og 3d-problemet gitt som i visse tilfeller er standardalgoritmen ikke den raskeste Dette skjer vanligvis når matrisen er svært bred dvs. 100 x 100000 eller 10 x 1000 x 1000 og det bevegelige gjennomsnittet beregnes i kortere dimensjon Størrelsen der standardalgoritmen er langsommere vil avhenge av datamaskinen. MATLAB 7 8 R2009a. Tags for denne filen Vennligst logg inn for å ta vare på filer. Vennligst logg inn for å legge til en kommentar eller vurdering og rangeringer 8. Funksjonen omhandler ender ved å klippe den bakre eller ledende delen av vinduet og overgang til et ledende eller etterfølgende glidende gjennomsnitt i stedet for en sentrert en For å gå med eksemplet du ga i din kommentere om vinduets størrelse er 3 da i midten av 1, blir gjennomsnittet data fra punkt 1 og 2 ved et senter på 2 poeng 1, 2 og 3 i gjennomsnitt på 9 poeng 8, 9 og 10 i gjennomsnitt og på et senter på 10 kan vi antar at vektoren har 10 oppføringer, poeng 9 og 10 er i gjennomsnitt. Hvordan går det med å håndtere endene Skal det begynne med en vinduestørrelse som bare omfatter punkt 1 ved 1, deretter 3 poeng ved punkt 2 og deretter økende i vinduets størrelse til vinduets størrelse er det som er angitt i funksjonsinngangen Takk. Ny og enkel Takk. God jobb Veldig nyttig som Stephan Wolf sa. Bare hva jeg var ute etter Sentrert glidende gjennomsnitt som kan fungere i et tomt over hele bredden uten å måtte se etter vindustørrelse av filteret og flytte begynnelsen Great. Accelerating tempoet i engineering og science. MathWorks er den ledende utvikleren av matematisk databehandling programvare for ingeniører og forskere.

No comments:

Post a Comment