Skip to main content

Glidande medelvärde in matlab plot


Jag behöver beräkna ett glidande medelvärde över en dataserie, inom en för loop. Jag måste få det glidande genomsnittet över N9 dagar. Array Im computing in är 4 serier av 365 värden (M), som i sig är medelvärden för en annan uppsättning data. Jag vill räkna ut medelvärdena för mina data med glidande medelvärde i en plot. Jag googled lite om glidande medelvärden och conv kommandot och hittade något som jag försökte implementera i min kod .: Så i princip beräknar jag mitt medelvärde och plottar det med ett (fel) glidande medelvärde. Jag valde wts-värdet direkt utanför mathworks webbplats, så det är felaktigt. (källa: mathworks. nlhelpeconmoving-average-trend-estimation. html) Mitt problem är dock att jag inte förstår vad det här är. Kan någon förklara om det har något att göra med värdena på värdena: det är ogiltigt i det här fallet. Alla värden är viktade samma. Och om jag gör det här helt fel, kan jag få lite hjälp med det mitt uppriktiga tack. frågade 23 sep 14 kl 19:05 Använda conv är ett utmärkt sätt att genomföra ett glidande medelvärde. I koden du använder är wts hur mycket du väger varje värde (som du gissade). Summan av den vektorn ska alltid vara lika med en. Om du vill vikta varje värde jämnt och göra ett N-rörligt filter så vill du göra Att använda det giltiga argumentet i conv resulterar i att få färre värden i Ms än du har i M. Använd samma om du inte har något emot effekterna av noll padding. Om du har signalbehandlingsverktygslådan kan du använda cconv om du vill prova ett cirkulärt glidande medelvärde. Något som Du borde läsa conv and cconv dokumentationen för mer information om du inte redan har. Du kan använda filter för att hitta ett löpande medelvärde utan att använda en för loop. I det här exemplet hittar du löpande medelvärdet för en vektor med 16 element, med en fönsterstorlek på 5. 2) Slät som en del av kurvanpassningsverktygslådan (som är tillgänglig i de flesta fall) yy släpper (y) data i kolumnvektorn y med ett glidande medelfilter. Resultat returneras i kolumnvektorn yy. Standardvärdet för det glidande medlet är 5. Ett enkelt (ad hoc) sätt är att bara ta ett vägt genomsnitt (inställbart av alfa) vid varje punkt med sina grannar: eller en viss variation därav. Ja, för att vara mer sofistikerad kan du Fourier förvandla dina data först och avklippa sedan högfrekvenserna. Något som: Detta skär ut de högsta 20 frekvenserna. Var försiktig med att klippa ut dem symmetriskt, annars är den omvända transformen inte längre riktig. Du måste noggrant välja cutoff-frekvensen för rätt nivå av utjämning. Detta är en mycket enkel typ av filtrering (boxfiltrering i frekvensdomänen), så du kan försiktigt försöka dämpa högfrekventa frekvenser om distorsionen är oacceptabel. svarade 4 okt 09 kl 9:16 FFT är inte en dålig idé, men det är förmodligen överkill här. Löpande eller rörliga medelvärden ger generellt dåliga resultat och bör undvikas för något förutom läxläxa (och vitt brus). Id använder Savitzky-Golay filtrering (i Matlab sgolayfilt (.)). Detta ger dig de bästa resultaten för det du söker - lite lokal utjämning samtidigt som du håller kurvens form. Utarbetad onsdagen den 08 oktober 2008 20:04 Senast uppdaterad den 14 mars 2013 01:29 Skriven av Batuhan Osmanoglu Träffar: 41480 Flyttande medelvärde I Matlab Ofta befinner jag mig själv i att behöva medelvärda data som jag måste minska bullret lite. Jag skrev några funktioner för att göra exakt vad jag vill, men matlabs inbyggda filterfunktion fungerar ganska bra också. Här skriver jag om 1D och 2D-medelvärde för data. 1D-filter kan realiseras med hjälp av filterfunktionen. Filterfunktionen kräver minst tre ingångsparametrar: täljarkoefficienten för filtret (b), nämnarkoefficienten för filtret (a) och data (X) förstås. Ett löpande medelfilter kan definieras enkelt genom: För 2D-data kan vi använda Matlabs filter2-funktionen. För mer information om hur filtret fungerar kan du skriva: Här är en snabb och smutsig implementering av ett 16 med 16 glidande medelfilter. Först måste vi definiera filtret. Eftersom allt vi vill ha är lika stort bidrag från alla grannar kan vi bara använda dem. Vi dela allt med 256 (1616) eftersom vi inte vill ändra signalens generella nivå (amplitud). För att applicera filtret kan vi helt enkelt säga följande Nedan är resultaten för fas av ett SAR-interferogram. I detta fall är området i Y-axeln och Azimuth är mappad på X-axeln. Filtret var 4 pixlar brett i Räckvidd och 16 pixlar bred i Azimuth.29 september 2013 Flyttande medelvärde genom convolution Vad rör sig i genomsnitt och vad är det bra för Hur flyttas medelvärdet genom att använda convolution Flyttmedelvärdet är en enkel operation som vanligtvis används för att undertrycka ljudet av en signal: vi ställer värdet på varje punkt till genomsnittet av värdena i dess grannskap. Med en formel: Här är x ingången och y är utsignalen, medan storleken på fönstret är w, skulle vara udda. Formeln ovan beskriver en symmetrisk operation: proven tas från båda sidor av den aktuella punkten. Nedan är ett verkligt exempel. Den punkt som fönstret ligger faktiskt är rött. Värden utanför x är tänkt att vara nollor: Att leka och se effekterna av glidande medelvärde, ta en titt på denna interaktiva demonstration. Hur man gör det genom konvoltering Som du kanske har insett är det att det enkla glidande medlet liknar konvolutionen: i båda fallen glider ett fönster längs signalen och elementen i fönstret sammanfattas. Så försök att göra samma sak genom att använda convolution. Använd följande parametrar: Den önskade utgången är: Som första tillvägagångssätt, låt oss försöka vad vi får genom att samla x-signalen med följande k-kärna: Utsignalen är exakt tre gånger större än den förväntade. Det kan också ses att utgångsvärdena är sammanfattningen av de tre elementen i fönstret. Det beror på att under fönstret glider fönstret, alla element i det multipliceras med en och sedan sammanfattas: yk 1 cdot x 1 cdot x 1 cdot x För att få önskade värden på y. utgången ska delas med 3: Med en formel inklusive divisionen: Men skulle det inte vara optimalt att göra uppdelningen under konvoltering Här kommer tanken genom att omordna ekvationen: Så vi ska använda följande k-kärna: På så sätt kommer vi att få önskad produktion: Generellt: om vi vill göra glidande medelvärde genom convolution som har en fönsterstorlek på w. vi ska använda följande k-kärna: En enkel funktion som gör det rörliga genomsnittet är: Ett exempel är:

Comments