Glidande Medelvärde Vektor Matlab


29 september, 2013.Kombinera medelvärdet genom convolution. What rör sig i genomsnitt och vad är det bra för. Hur flyttar medelvärdet genom att använda convolution. Moving Average är en enkel operation som vanligtvis används för att undertrycka ljud från en signal vi ställer in värdet av varje Peka på medelvärdet av värdena i dess grannskap Med en formel. Her x är ingången och y är utsignalen, medan storleken på fönstret är w, ska vara udda Formeln ovan beskriver en symmetrisk operation som proven tas Från båda sidor av den aktuella punkten. Längs är ett verkligt exempel. Den punkt som fönstret läggs faktiskt är rött. Värden utanför x är tänkt att vara nollor. För att leka och se effekterna av glidande medelvärde, kolla på detta Interaktiv demonstration. Hur gör det genom convolution. As du kanske har erkänt, är beräkningen av det enkla glidande medlet liknar konvolutionen i båda fallen ett fönster glider längs signalen och elementen i fönstret sammanfattas Så, prova att göra Samma sak genom att använda konvolvering 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. Produktionen är exakt tre gånger större än den förväntade. Det kan också vara sett 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 ska utdata divideras med 3. med en formel inklusive divisionen. Men det skulle inte vara optimalt att göra uppdelningen under konvolvering Omarrangera ekvationen. Så ska vi använda följande k-kärna. På det här sättet kommer vi att få önskad utmatning. Generellt om vi vill flytta medelvärdet genom konvoltering med ett fönsterstorlek w ska vi använda följande k-kärna. A enkel Funktionen gör det rörliga genomsnittet är. Ett exempel är användningen. Ladda ner movAv m se också movAv2 - en uppdaterad version som tillåter viktning. Beskrivning Matlab innehåller funktioner som kallas movavg och tsmovavg-tidsserie rörande medelvärde i Financial Toolbox, movAv är utformad för att replikera de grundläggande Funktionalitet av dessa Koden här ger ett bra exempel på hantering av index inom slingor som kan vara förvirrande till att börja med att jag medvetet har hållit koden kort och enkel att hålla denna process klar. movAv utför ett enkelt glidande medelvärde som kan Användas för att återställa bullriga data i vissa situationer. Det fungerar genom att ange medelvärdet av ingången y över ett glidande tidsfönster, vars storlek anges av n. Ju större n är desto större mängden av utjämningseffekten av n är I förhållande till längden på ingångsvektorn y och effektivt väl, skapar ett lågpassfrekvensfilter - se avsnittet exempel och överväganden. Eftersom mängden utjämning som tillhandahålls av varje värde av n är i förhållande till längden på ingångsvektorn, är det S alltid värt att testa olika värden för att se vad som är lämpligt. Kom ihåg också att n poäng går förlorade vid varje genomsnitt om n är 100, de första 99 punkterna i inmatningsvektorn innehåller inte tillräckligt med data för ett 100pt-medelvärde. Detta kan undvikas något genom stapling medelvärden, till exempel, koden och grafen nedan jämför ett antal olika längdfönstervärden. Observera hur jämn 10 10pt jämförs med ett enda 20pt-medelvärde. I båda fallen förloras totalt 20 poäng totalt. Skapa xaxis x 1 0 01 5 Generera brusbrusReps 4 buller repmat randn 1, ceilingsnummer x noiseReps, noiseReps, 1 brusresigneringsbuller, 1, ljudbuller i ljudljudReps Generera ydata-ljud x exp x 10 ljud 1 längd x Percentgenomsnitt 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 glidande medelvärde, 10 10pt, 20pt, 40pt, 100pt xlabel x ylabel y-titel Jämförelse av rörliga medelvärden. movAv m-kod genomgångsfunktionsutförande movAv y, n Den första raden definierar funktionens namn, ingångar och utgångar Ingången X bör vara en vektor av data för att utföra medelvärdet, n skulle vara antalet poäng som ska utföra den genomsnittliga överutgången kommer att innehålla den genomsnittliga data som returneras av funktionen. Fördela utgångsutdata NaN 1, numel y Hitta mittpunkten i n midPoint-runda N 2 Funktionens huvuduppgift görs i loopbandet, men innan man börjar startas två saker Fir Stly utsignalen är fördelad som NaNs, detta tjänade två syften. För det första är förallokering generellt bra eftersom det minskar minnes jonglering Matlab måste göra, för det andra gör det mycket enkelt att placera den genomsnittliga data i en utmatning i samma storlek som Ingångsvektorn Det betyder att samma xaxis kan användas senare för båda, vilket är lämpligt för plottning, alternativt kan NaN: erna tas bort senare i en rad kodutgångar. Den variabla midPoint kommer att användas för att inrikta data i utgångsvektorn Om n 10, 10 poäng kommer att gå vilse eftersom för de första 9 punkterna av ingångsvektorn finns det inte tillräckligt med data för att ta ett 10-poängs genomsnitt. Eftersom utmatningen kommer att vara kortare än ingången måste den justeras korrekt midpoint användas så att en lika stor mängd data går förlorad vid start och slut och ingången hålls inriktad med utgången av NaN-buffertarna som skapas vid preallokering av output. for en 1 längd y - n Hitta indexintervall för att ta genomsnittet över abban Beräkna genomsnittlig produktion a midPoint betyder yab-änden I själva loop-loopen tas ett medel över varje på varandra följande segment av ingången. Slingan körs för en som definieras som 1 upp till längden på ingången y, minus de data som kommer att gå vilse n Om ingången är 100 poäng lång och n är 10 kommer slingan att springa från en 1 till 90. Detta betyder att det första indexet för segmentet blir genomsnittligt Det andra indexet b är helt enkelt ett n-1 Så vid den första iterationen, A 1 n 10 så b 11-1 10 Det första genomsnittet tas över yab eller x 1 10 Medelvärdet för det här segmentet, som är ett enda värde, lagras i utgången i indexet midPoint eller 1 5 6. På den andra iterationen , en 2 b 2 10-1 11 så medelvärdet tas över x 2 11 och lagras i utgång 7 På den sista iterationen av slingan för en ingång av längd 100, en 91 b 90 10-1 100 så medlet tas över x 91 100 och lagras i utgången 95 Detta lämnar utdata med totalt n 10 NaN-värden vid index 1 5 och 96 100.Exemplar och överväganden Flyttande medelvärden är användbara i vissa situationer, men de är inte alltid det bästa valet Här är två exempel där de inte nödvändigtvis är optimala. Mikrofonkalibrering Denna uppsättning data representerar nivåerna för varje frekvens som produceras av en högtalare och inspelad av en mikrofon med ett känt linjärt svar. Högtalarens utgång varierar med Frekvens, men vi kan korrigera för denna variation med kalibreringsdata - utgången kan justeras på nivå för att beräkna fluktuationerna i kalibreringen. Notera att rådata är bullriga - det betyder att en liten förändring i frekvens tycks kräva en Stor, ojämn, förändring i nivå för att redogöra för Är detta realistiskt eller är det här en produkt av inspelningsmiljön Det är rimligt att i detta fall tillämpa ett glidande medelvärde som släpper ut nivåfrekvenskurvan för att ge en kalibreringskurva som är något mindre ojämn Men varför är det inte optimalt i detta exempel. Mer data skulle vara bättre - flera kalibreringar körs i genomsnitt tillsammans skulle förstöra bruset i systemet så länge det sprang Dom och ge en kurva med mindre subtila detaljer förlorade. Det rörliga genomsnittet kan bara approximera detta och kan ta bort några högre frekvensdips och toppar från den kurva som verkligen existerar. Sina vågor Med ett rörligt medelvärde på sinusvågor framhävs två punkter. Den allmänna fråga om att välja ett rimligt antal poäng för att utföra medelvärdet. Det är enkelt, men det finns mer effektiva metoder för signalanalys än genomsnittliga oscillerande signaler i tidsdomänen. I detta diagram är den ursprungliga sinusvågen ritad i blått Buller är läggs till och ritas som den orangefärgade kurvan Ett rörligt medelvärde utförs på olika punkter för att se om den ursprungliga vågen kan återvinnas. 5 och 10 poäng ger rimliga resultat, men ta inte bort bullret helt, där så många poäng börjar förlora amplituddetalj när medeltalet sträcker sig över olika faser, kom ihåg vågoscillatorn runt noll och medelvärdet -1 1 0. Ett alternativt tillvägagångssätt skulle vara att konstruera ett lågpassfilter än det kan vara appliceras på signalen i frekvensdomänen jag kommer inte att gå in i detalj eftersom den går utöver omfattningen av denna artikel, men eftersom bullret är betydligt högre frekvens än vågens grundläggande frekvens, skulle det vara ganska lätt att i detta fall konstruera Ett lowpass-filter än att ta bort högfrekventa brus. Använda MATLAB, hur kan jag hitta 3-dagars glidande medelvärde för en viss 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 har jag gett min kod. Given följande matris a och mask. Jag har försökt att implementera conv-kommandot men jag får ett fel Här är det kommandot conv som jag har försökt använda i den andra kolumnen i Matris a. Den utmatning 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 matrisen a rena Med matris a som önskatUtgång för illustration. 3-dagars genomsnittet 17, 14, 11 är 14 3-dagars genomsnittet av 14, 11, 8 är 11 3-dagars genomsnittet av 11, 8, 5 är 8 och 3 - dagmedelvärde 8, 5, 2 är 5 Det finns inget värde i de nedersta 2 raderna för den 4: e kolumnen eftersom beräkningen för 3-dagars glidande medel börjar längst ner. Giltig utgång visas inte förrän minst 17, 14 och 11 Förhoppningsvis är det här meningsfullt Aaron 12 juni kl. 13.00. I allmänhet 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 upplösning delas med tre eller längden på Det rörliga genomsnittet. För det andra märker du storleken på c. Du kan inte bara passa c till ett. Det typiska sättet att få ett rörligt medelvärde skulle vara att använda samma. Men det ser inte ut som du vill. Istället är du tvungen att använda ett par av linjer.

Comments

Popular Posts