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 konvoltering Flyttande medelvärde är en enkel operation som vanligtvis används för att undertrycka brus 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: För att spela runt 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äknar man med 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 är för 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 som inkluderar divisionen: Men skulle det inte vara optimalt att göra uppdelningen under convolution 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 utgång: 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 glidande medlet är: Ett exempel är: Använd MATLAB, hur kan jag hitta 3-dagars glidande medelvärde för en specifik kolumn i en matris och lägga till glidande medelvärde i den matrisen Jag försöker beräkna 3-dagars glidande medelvärde från botten till toppen av matrisen. Jag har angivit min kod: Med tanke på följande matris a och mask: Jag har försökt implementera kommandot conv men jag får ett fel. Här är conv kommandot jag har försökt använda på 2: a kolumnen i matris a: Utgången jag önskar ges i följande matris: Om du har några förslag, skulle jag verkligen uppskatta det. Tack För kolumn 2 i matris a, beräknar jag 3-dagars glidande medelvärde enligt följande och placerar resultatet i kolumn 4 i matris a (jag byttes matris a som 39desiredOutput39 bara för illustration). 3-dagarsgenomsnittet 17, 14, 11 är 14 3-dagarsgenomsnittet 14, 11, 8 är 11 3-dagarsgenomsnittet 11, 8, 5 är 8 och 3-dagarsgenomsnittet 8, 5, 2 är 5. Det finns inget värde i botten 2 rader för den 4: e kolumnen eftersom beräkningen för 3-dagars glidande medel börjar längst ner. Den 39valid39-utmatningen visas inte förrän minst 17, 14 och 11. Förhoppningsvis är det här meningsfullt Aaron Jun 12 13 at 1:28 Generellt skulle det hjälpa om du skulle visa felet. I det här fallet gör du två saker fel: Först måste din konvolver delas av tre (eller längden på det glidande medlet) För det andra märker du storleken på c. Du kan inte bara passa c till en. Det typiska sättet att få ett glidande medelvärde skulle vara att använda samma: men det ser inte ut som vad du vill ha. I stället är du tvungen att använda ett par linjer: Skapat onsdagen den 08 oktober 2008 20:04 Senast uppdaterad den 14 mars 2013 01:29 Skriven av Batuhan Osmanoglu Hits: 41497 Flyttande medelvärde I Matlab Ofta tycker jag att jag behöver Medelvärdet av data 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 enkelt definieras av: 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 de funktionerna. 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 visas 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 vid Azimuth. En enkel rörelsepunktsgenomsnitt i Matlab Ett enkelt rörelsepunktsgenomsnitt i MATLAB. Ett glidande medelvärde eller ett rullande medelvärde är en av de vanligaste utjämningsteknikerna som används för att extrahera en bra signal ut ur en mycket slumpmässig högljudd signal. Denna teknik brukar användas för att se beteendet hos en funktion eller en signal när de fysiska parametrarna och miljön har en felaktig effekt på den uppmätta signalen. Med en serie av siffror och en bestämd delmängdsstorlek erhålls det första elementet i det rörliga genomsnittsvärdet genom att ta medeltalet av den första fasta delmängden av nummerserien. Därefter modifieras delmängden med 8220växling framåt8221, det vill säga, exklusive det första numret av serierna och inklusive nästa nummer som följer den ursprungliga delmängden i serien. Detta skapar en ny delmängd av tal, vilket är i genomsnitt. Denna process upprepas över hela dataserien. Plotlinjen som förbinder alla (fasta) medelvärden är det rörliga genomsnittet. Ett glidande medelvärde är en uppsättning tal, varav varje är medlet av motsvarande delmängd av en större uppsättning av datumpunkter. Ett rörligt medelvärde kan också använda ojämna vikter för varje nollvärde i delmängden för att betona särskilda värden i delmängden. Den allmänna tekniken innebär att man finner medelvärdet från ett lika stort antal data på vardera sidan av ett centralt värde. Detta säkerställer att variationer i medelvärdet är anpassade till variationerna i data istället för att förskjutas i tid. Det kan finnas några anomalier när variationen inte är likformig, men det här kommer inte att diskuteras här. Det kan finnas olika typer av rörelsepunktsmedelvärden som det kumulativa glidande medletet Viktat glidande medelvärde Exponentiellt glidande medelvärde Modifierat glidande medelvärde och Regression glidande genomsnittsmetoder I det här inlägget har jag bifogat en MATLAB-kod för att göra ett enkelt glidande medelvärde. Den här koden kan användas för att släta en signal med en bra funktion men med ett litet bakgrundsbrus utan att kompromissa med datavärdet. Men var försiktig med genomsnittet för dina egna data.
No comments:
Post a Comment