Monday 23 October 2017

Moving Gjennomsnittet Funksjon Matlab


Jeg prøver å fullføre et matlab-oppdragsprosjekt med følgende spørsmål. Skriv en funksjon som heter movingaverage som tar en skalar kalt x som et inngangsargument og returnerer en skalar. Funksjonen bruker en buffer for å holde tidligere innganger, og bufferen kan holde et maksimum av 25 innganger Spesifikt må funksjonen lagre de siste 25 inngangene i en vektor bufferen Hver gang funksjonen kalles, kopierer den inngangsargumentet til et element i bufferen Hvis det allerede er 25 innganger lagret i bufferen, kasserer den det eldste elementet og lagrer den nåværende i bufferen Etter at den har lagret inngangen i bufferen, returnerer den gjennomsnittet av alle elementene i bufferen. Løsningen jeg gir er følgende. I henhold til automatisk grader fungerer funksjonen min riktig når verdier 1-50 går forbi, men mislykkes når verdier av en støyende sinusbølge passerer fortløpende som jeg har blitt informert om som kan skyldes en slags en runde feil. Jeg ville være gratefu Hvis noen av dere kunne gi meg noen hint om mulige feilstrinn i koden min vedlagt ovenfor. Takk på forhånd. 29 september 2013.Gjennom gjennomsnittet etter convolution. What går i gjennomsnitt og hva er det bra for. Hvordan går det? gjennomsnittlig utført ved å bruke convolution. Moving gjennomsnitt er en enkel operasjon som vanligvis brukes til å undertrykke støy av et signal vi setter verdien av hvert punkt til gjennomsnittet av verdiene i nabolaget Ved en formel. Her x er inngangen og y er utgangen signal, mens vinduets størrelse er w, skal være merkelig. Formelen ovenfor beskriver en symmetrisk operasjon, prøvene tas fra begge sider av det aktuelle punktet. Det er et virkelighetseksempel. Det punktet som vinduet legges på, er faktisk røde verdier utenfor x er ment å være nuller. for å spille rundt og se effekten av glidende gjennomsnitt, ta en titt på denne interaktive demonstrasjonen. hvordan å gjøre det ved convolution. As du kanskje har gjenkjent, beregner det enkle glidende gjennomsnittet ligner på konvolutten ion i begge tilfeller et vindu glides langs signalet og elementene i vinduet er oppsummert Så prøv det å gjøre det samme ved å bruke konvolusjon Bruk følgende parametre. Ønsket utgang er. Som første tilnærming, la oss prøve hva vi får ved å samle x-signalet med følgende k-kjerne. Utgangen er nøyaktig tre ganger større enn den forventede. Det kan også ses at utgangsvurderingene er sammendraget av de tre elementene i vinduet. Det er fordi under konvolusjonen Vinduet glides sammen, alle elementene i det blir multiplisert med en og deretter oppsummert. yk 1 cdot x 1 cdot x 1 cdot x. For å få de ønskede verdiene av y, skal utgangen divideres med 3. Med en formel inkludert divisjonen. Men det ville ikke være optimalt å gjøre avdelingen under konvolusjon. Her kommer ideen av omarrangere ligningen. Så skal vi bruke følgende k-kjerne. På denne måten vil vi få den ønskede utdata. I generell hvis vi vil flytte gjennomsnittet ved konvolusjon som har et vindu størrelse w, skal vi bruke følgende k-kjernen. A enkel funksjonen gjør det bevegelige gjennomsnittet. Et eksempel er bruk. Jeg trenger å beregne et bevegelige gjennomsnitt over en dataserie, i en for-løkke må jeg få det bevegelige gjennomsnittet over N 9 dager. Arrayet jeg beregner er 4 serie 365 verdier M, som i seg selv er middelverdier av et annet sett med data Jeg vil plotte gjennomsnittverdiene av dataene mine med det bevegelige gjennomsnittet i ett plot. Jeg googlede litt om bevegelige gjennomsnitt og conv-kommandoen og fant noe som jeg prøvde å implementere i min kode. Så i utgangspunktet beregner jeg min gjennomsnitt og plotter den med feil flytting gjennomsnitt Jeg valgte wts-verdien rett utenfor mathworks-siden, så det er feil kilde. Mitt problem er at jeg ikke forstår hva dette wts er. Kan noen forklare om det har noe å gjøre med vikene til verdiene som er ugyldige i denne saken Alle verdier er vektet det samme. Og hvis jeg gjør dette helt feil, kan jeg få litt hjelp med det. Min oppriktige takk. Skrevet 23. september 14 kl 19.05. Bruke conv er en utmerket måte å implementere et glidende gjennomsnitt på koden du bruker, wts er hvor mye du veier hver verdi som du gjettet summen av den vektoren skal alltid være lik en Hvis du ønsker å vekt hver verdi jevnt og gjøre et størrelse N-bevegelig filter så vil du gjøre det . Ved å bruke det gyldige argumentet i conv vil resultere i å ha færre verdier i Ms enn du har i M Bruk samme hvis du ikke har tenkt på effekten av nullpolstring Hvis du har signalbehandlingsverktøyskassen, kan du bruke cconv hvis du vil prøve en sirkulær glidende gjennomsnitt Noe som. Du burde lese conv og cconv dokumentasjon for mer informasjon hvis du allerede har t. You kan bruke filter for å finne et løpende gjennomsnitt uten å bruke en for-løkke Dette eksempelet finner løpende gjennomsnitt av en 16-elementvektor, ved hjelp av en vindusstørrelse på 5.2 glatt som en del av kurven Fitting Toolbox som er tilgjengelig i de fleste tilfeller. yy glatt y glatter dataene i kolonnevektoren y ved hjelp av et glidende gjennomsnittfilter. Resultatene returneres i kolonnevektoren. Standardverdien for glidende gjennomsnitt er 5.

No comments:

Post a Comment