Wednesday, 22 November 2017

Flytting Gjennomsnitt I Matlab Filteret


Laget på onsdag 08 oktober 2008 20:04 Sist oppdatert torsdag 14. mars 2013 01:29 Skrevet av Batuhan Osmanoglu Hits: 41484 Flytende Gjennomsnitt I Matlab Ofte finner jeg meg selv i gjennomsnitt av dataene jeg må redusere støyen litt bit. Jeg skrev noen funksjoner for å gjøre akkurat det jeg vil, men matlabs innebygd filterfunksjon fungerer også bra bra. Her skriver jeg om 1D og 2D-gjennomsnittsdata. 1D filter kan realiseres ved hjelp av filterfunksjonen. Filterfunksjonen krever minst tre inngangsparametre: tellerkoeffisienten for filteret (b), nevnte koeffisient for filteret (a) og dataene (X) selvfølgelig. Et løpende gjennomsnittfilter kan defineres enkelt ved: For 2D-data kan vi bruke Matlabs filter2-funksjonen. For mer informasjon om hvordan filteret fungerer, kan du skrive: Her er en rask og skitten implementering av et 16 til 16 glidende gjennomsnittsfilter. Først må vi definere filteret. Siden alt vi vil ha er like bidrag fra alle naboer, kan vi bare bruke de funksjonene. Vi deler alt med 256 (1616) siden vi ikke vil endre det generelle nivået (amplitude) av signalet. For å bruke filteret kan vi bare si følgende Nedenfor er resultatene for fase av et SAR interferogram. I dette tilfellet er Range i Y-aksen, og Azimuth er kartlagt på X-aksen. Filteret var 4 piksler bredt i rekkevidde og 16 piksler bredt i Azimuth. Moving Average 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 sidebjelMåtte MATLAB, hvordan kan jeg finn tre-dagers glidende gjennomsnitt for en bestemt kolonne i en matrise og legg til glidende gjennomsnitt i den matrisen. Jeg prøver å beregne tre-dagers glidende gjennomsnitt fra bunnen til toppen av matrisen. Jeg har oppgitt koden min: Gitt følgende matrise a og maske: Jeg har prøvd å implementere conv kommandoen, men jeg mottar en feil. Her er conv kommandoen jeg har prøvd å bruke på 2. kolonne av matrise a: Utgangen jeg ønsker er gitt i følgende matrise: Hvis du har noen forslag, vil jeg sette stor pris på det. Takk for kolonne 2 i matrisen a, beregner jeg 3-dagers glidende gjennomsnitt som følger og plasserer resultatet i kolonne 4 i matrise a (jeg omdøpt matrise a som 39desiredOutput39 bare for illustrasjon). 3-dagers gjennomsnittet av 17, 14, 11 er 14 det 3-dagers gjennomsnittet på 14, 11, 8 er 11 3-dagers gjennomsnittet av 11, 8, 5 er 8 og 3-dagers gjennomsnittet på 8, 5, 2 er 5. Det er ingen verdi i de nederste 2 radene for fjerde kolonne fordi beregningen for 3-dagers glidende gjennomsnitt begynner nederst. Den 39 ugyldige 39-utgangen vil ikke bli vist før minst 17, 14 og 11. Forhåpentligvis er dette fornuftig ndash Aaron 12. juni kl 13:28 Generelt vil det hjelpe hvis du vil vise feilen. I dette tilfellet gjør du to ting feil: Først må fellingen din divideres med tre (eller lengden på det bevegelige gjennomsnittet). For det andre, merk størrelsen på c. Du kan ikke bare passe inn i en. Den typiske måten å få et bevegelige gjennomsnitt på, ville være å bruke samme: men det ser ikke ut som du vil. I stedet er du tvunget til å bruke et par linjer: Ved hjelp av MATLAB, hvordan kan jeg finne tre-dagers glidende gjennomsnitt av en bestemt kolonne av en matrise og legge til glidende gjennomsnitt i den matrisen jeg prøver å beregne 3-dagers glidende gjennomsnitt fra bunn til toppen av matrisen. Jeg har oppgitt koden min: Gitt følgende matrise a og maske: Jeg har prøvd å implementere conv kommandoen, men jeg mottar en feil. Her er conv kommandoen jeg har prøvd å bruke på 2. kolonne av matrise a: Utgangen jeg ønsker er gitt i følgende matrise: Hvis du har noen forslag, vil jeg sette stor pris på det. Takk for kolonne 2 i matrisen a, beregner jeg 3-dagers glidende gjennomsnitt som følger og plasserer resultatet i kolonne 4 i matrise a (jeg omdøpt matrise a som 39desiredOutput39 bare for illustrasjon). 3-dagers gjennomsnittet av 17, 14, 11 er 14 det 3-dagers gjennomsnittet på 14, 11, 8 er 11 3-dagers gjennomsnittet av 11, 8, 5 er 8 og 3-dagers gjennomsnittet på 8, 5, 2 er 5. Det er ingen verdi i de nederste 2 radene for fjerde kolonne fordi beregningen for 3-dagers glidende gjennomsnitt begynner nederst. Den 39 ugyldige 39-utgangen vil ikke bli vist før minst 17, 14 og 11. Forhåpentligvis er dette fornuftig ndash Aaron 12. juni kl 13:28 Generelt vil det hjelpe hvis du vil vise feilen. I dette tilfellet gjør du to ting feil: Først må fellingen din divideres med tre (eller lengden på det bevegelige gjennomsnittet). For det andre, merk størrelsen på c. Du kan ikke bare passe inn i en. Den typiske måten å få et bevegelige gjennomsnitt på, ville være å bruke samme: men det ser ikke ut som du vil. I stedet er du tvunget til å bruke et par linjer:

No comments:

Post a Comment