Friday 15 September 2017

Glidande Medelvärde Filter Code In Matlab


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 glidande medelvärde i Financial Toolbox, movAv är utformad för att replikera grundläggande funktionalitet för dessa. Koden här ger ett bra exempel på hantering Indexer inuti slingor som kan vara förvirrande för 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 ta en medelvärde Av ingången y över ett glidande tidfönster, vars storlek anges av n Den större n är, ju större mängden av utjämning effekten av n är i förhållande till ingångsvektorns längd y och effektivt väl, sorts 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 den alltid värt 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 att stapla medelvärden för Exempelvis jämför koden och grafen nedan ett antal olika längdfönstermedelvärden Observera hur jämn 10 10pt jämförs med ett enda 20pt-medelvärde I båda fallen försvinner 20 punkter i totalt. Skapa xaxis x 1 0 01 5 Generera brusbrusReps 4 buller repmat randn 1, ceil numel x noiseReps, noiseReps, 1 brusreform brus, 1, ljud brus ljudReps Generera ydata ljud y exp x 10 ljud 1 längd x Perfrom medelvärden 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 Medelvärde output 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 kurvan 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 det här diagrammet ä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å större antal poäng börjar Förlora amplituddetalj som genomsnittet 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 vad som kan vara Tillämpas 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 ljudet är betydligt högre frekvens än vågens grundläggande frekvens, skulle det vara ganska lätt att i detta fall konstruera Ett lågpassfilter än att avlägsna högfrekventa ljud. Utarbetad onsdagen den 08 oktober 2008 20 04 Uppdaterad den 14 mars 2013 01 29 Skriven av Batuhan Osmanoglu Hits 41573.Moving Average In Matlab. Ofta befinner jag mig själv i behov av medelvärde De data som jag måste minska bullret lite skrev jag några funktioner för att göra exakt vad jag vill, men matlabs inbyggda filterfunktion fungerar också bra här Här skriver jag om 1D och 2D-medelvärdet av data. Ett filter kan vara 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 givetvis. Ett löpande medelfilter kan definieras D enkelt. För 2D-data kan vi använda Matlab s filter2-funktionen För mer information om hur filtret fungerar kan du skriva. Här är en snabb och smutsig implementering av ett 16-i-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 Funktionen Vi delar allt med 256 16 16 eftersom vi inte vill ändra signalets generella nivå amplitude. För att tillämpa 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 bredt i Räckvidd och 16 pixlar vid Azimuth. Moving Average Function. result rörlig data, fönster, Dim, beräknar alternativet ett centrerat glidande medelvärde för datamatrisdata med en fönsterstorlek som anges i fönstret i dimdimension, med den algoritm som anges i alternativet Dim och alternativet är valfria ingångar och kommer som standard till 1.Dim och alternativet kan valfria ingångar hoppas över en Fönstret, eller kan ersättas med en Till exempel rörlig data, kommer fönstret att ge samma resultat som movingmean data, fönster, 1,1 eller movingmean data, fönster, 1.Inmatningsmatrismatrisstorlek och dimension begränsas endast av den maximala matrisstorleken För din plattform Fönstret måste vara ett heltal och ska vara udda Om fönstret är jämnt, är det avrundat till nästa nedre udda nummer. Funktionen beräknar det glidande medlet som innehåller en mittpunkt och fönster-1 2 element före och efter i den angivna dimensionen Vid matrisens kanter minskas antalet element före eller efter så att den faktiska fönstret är mindre än det angivna fönstret. Funktionen är uppdelad i två delar, en 1d-2d-algoritm och en 3d-algoritm Detta gjordes för att optimera Lösningshastighet, speciellt i mindre matriser i e.1000 x 1 Vidare tillhandahålls flera olika algoritmer till 1d-2d - och 3d-problemet som i vissa fall är standardalgoritmen inte det snabbaste. Det händer vanligtvis när matrisen är väldigt bred Dvs 100 x 100000 eller 10 x 1000 x 1000 och det glidande medlet beräknas i kortare storlek. Storleken där standardalgoritmen är långsammare beror på datorn. MATLAB 7 8 R2009a. Tags för denna fil Vänligen logga in för att tagga filer. Vänligen logga in för att lägga till en kommentar eller betyg och betyg 8. Funktionen handlar om slutar genom att klippa fönstrets bakre eller ledande del och övergå till ett ledande eller efterföljande glidande medel istället för en centrerad en Att gå med det exempel du gav i din Kommentera om fönsterstorleken är 3, då i ett centrallag av 1, medverkar funktionen data från punkterna 1 och 2 i ett center av 2 poäng 1, 2 och 3 är i medelvärdet med 9 punkter 8, 9 och 10 medeltal Och i ett center av 10 kan antas att vektorn har 10 inmatningspunkter 9 och 10 är medeltal. Hur handlar det om att hantera ändarna Startar det med en fönsterstorlek som endast omfattar punkt 1 vid 1, sedan 3 poäng vid punkt 2 och därefter ökande I fönsterstorlek tills fönsterstorleken är den som anges I funktionsinmatningen Thanks. Nice and simple Tack. Bra jobb Mycket användbart som Stephan Wolf sa. Bara vad jag letade efter centrerat glidande medelvärde som kan arbeta i en plot över hela bredden utan att behöva leta efter fönsterstorlek Av filtret och flytta början Great. Accelerating taktiken för teknik och science. MathWorks är den ledande utvecklaren av matematisk datorsystem för ingenjörer och forskare.

No comments:

Post a Comment