Viktat Glidande Medelvärde Filter


FIR-filter, IIR-filter och den linjära konstant-koefficientskillnadsekvationen Causal Moving Average (FIR) - filtret Weve diskuterade system där varje prov av utmatningen är en viktad summa av (vissa av) proven av ingången. Låt oss ta ett kausalt vägt sumssystem, där orsakssamband betyder att ett givet utprov endast beror på det aktuella ingångsprovet och andra ingångar tidigare i sekvensen. Varken linjära system i allmänhet, eller särskilt begränsade impulsresponssystem, måste vara kausal. Kausalitet är dock lämplig för en typ av analys som skulle undersöka snart. Om vi ​​symboliserar ingångarna som värden för en vektor x. Och utsignalerna som motsvarande värden för en vektor y. då kan ett sådant system skrivas som där b-värdena är quotweightsquot applicerad på nuvarande och tidigare inmatningssampler för att få det aktuella utgångsprovet. Vi kan tänka på uttrycket som en ekvation, med lika teckenbetydande lika, eller som en procedurinstruktion, med jämställdhetsbeteckningen. Låt skriva uttrycket för varje utmatningsprov som en MATLAB-slinga av uppdragsdeklarationer, där x är en N-längdsvektor av ingångsprover och b är en M-längdsvektor av vikter. För att hantera det speciella fallet i början lägger vi in ​​x i en längre vektor xhat vars första M-1-prov är noll. Vi kommer att skriva den vägda summeringen för varje y (n) som en inre produkt, och kommer att göra vissa manipuleringar av ingångarna (som omvänd b) för detta ändamål. Denna typ av system kallas ofta ett glidande medelfilter av uppenbara skäl. Från våra tidigare diskussioner bör det vara uppenbart att ett sådant system är linjärt och växelverkande. Naturligtvis skulle det vara mycket snabbare att använda MATLAB convolution funktionen conv () istället för vår mafilt (). I stället för att överväga de första M-1-proverna av ingången att vara noll, kan vi betrakta dem som de sista M-1-proverna. Detta är detsamma som att behandla inmatningen som periodisk. Använd väl cmafilt () som funktionens namn, en liten ändring av den tidigare mafilt () - funktionen. Vid bestämning av impulsresponsen hos ett system är det vanligen ingen skillnad mellan dessa två eftersom alla icke-initiala prover av ingången är noll: Eftersom ett system av detta slag är linjärt och skift-invariant vet vi att dess effekt på alla sinusoid kommer bara att skala och flytta den. Här är det viktigt att vi använder den cirkulära versionen Den cirkulärkonvolverade versionen skiftas och skalas lite, medan versionen med vanlig konvolvering snedvrids i början. Låt oss se vad exakt skalering och skiftning är med hjälp av en fft: Både ingång och utgång har endast amplitud vid frekvenserna 1 och -1, vilket är som det borde vara, eftersom ingången var en sinusoid och systemet var linjärt. Utgångsvärdena är större med ett förhållande av 10,62518 1,3281. Detta är förstärkningen av systemet. Vad sägs om fasen Vi behöver bara se var amplitude är noll: Inmatningen har en fas av pi2, som vi begärde. Utgångsfasen skiftas med ytterligare 1,0594 (med motsatt tecken på negativ frekvens), eller cirka 16 av en cykel till höger, som vi kan se på grafen. Nu kan vi prova en sinusoid med samma frekvens (1), men istället för amplitud 1 och fas pi2 kan vi prova amplitud 1,5 och fas 0. Vi vet att endast frekvens 1 och -1 kommer att ha en nollamplitude, så vi kan bara titta Vid dem: Återigen är amplitudförhållandet (15.937712.0000) 1.3281 - och för fas är det igen skiftat med 1.0594 Om dessa exempel är typiska kan vi förutse effekten av vårt system (impulsrespons .1 .2 .3 .4 .5) på någon sinusoid med frekvens 1 - amplituden ökas med en faktor 1,3281 och den (positiva frekvensen) - fasen kommer att flyttas med 1,0594. Vi kunde fortsätta att beräkna effekten av detta system på sinusoider av andra frekvenser med samma metoder. Men det finns ett mycket enklare sätt, och en som fastställer den allmänna punkten. Eftersom (cirkulär) konvolvering i tidsdomänen betyder multiplikation i frekvensdomänen följer det att med andra ord är DFT för impulssvaret förhållandet mellan DFT för utgången och DFT på ingången. I detta förhållande är DFT-koefficienterna komplexa tal. Eftersom abs (c1c2) abs (c1) abs (c2) för alla komplexa tal c1, c2, berättar denna ekvation oss att impulsresponsens amplitudspektrum alltid är förhållandet mellan amplitudspektrumet för utsignalen och den hos ingången . När det gäller fasspektret, vinkeln (c1c2) vinkeln (c1) - vinkeln (c2) för alla c1, c2 (med förbehåll att faserna skiljer sig åt med n2pi anses lika). Därför är fasspektrumet för impulssvaret alltid skillnaden mellan fasspektra av utgången och ingången (med vilka korrigeringar med 2pi som behövs för att hålla resultatet mellan - pi och pi). Vi kan se faseffekterna tydligare om vi avvecklar representationen av fas, dvs om vi lägger till flera multiplar av 2pi efter behov för att minimera de hopp som produceras av den periodiska karaktären av vinkeln () - funktionen. Även om amplituden och fasen vanligtvis används för grafisk och jämn tabulär presentation, eftersom de är ett intuitivt sätt att tänka på effekterna av ett system på de olika frekvenskomponenterna i dess ingång, är de komplexa Fourier-koefficienterna mer användbara algebraiskt, eftersom de tillåter det enkla uttrycket för förhållandet Det allmänna tillvägagångssättet vi just har sett kommer att fungera med godtyckliga filter av den skissade typen, där varje utmatningsprov är en viktad summa av en uppsättning ingångsprover. Som nämnts tidigare kallas de ofta Finite Impulse Response-filter, eftersom impulssvaret är av ändlig storlek, eller ibland Flytta genomsnittliga filter. Vi kan bestämma frekvensresponsegenskaperna hos ett sådant filter från FFT av dess impulsrespons, och vi kan även designa nya filter med önskade egenskaper av IFFT från en specifikation av frekvensresponsen. Autoregressiva (IIR) - filter Det skulle vara litet att ha namn på FIR-filter om det inte fanns några andra slag att skilja dem från, och så de som har studerat pragmatik kommer inte att förvåna sig för att lära sig att det verkligen finns ett annat stort slag av linjärt tidsinvarianskt filter. Dessa filter kallas ibland rekursiva eftersom värdet av tidigare utdata (liksom tidigare ingångar) betyder att även om algoritmerna generellt skrivs med iterativa konstruktioner. De kallas också Infinite Impulse Response (IIR) - filter, eftersom deras svar på impulser i allmänhet fortsätter för alltid. De kallas även ibland autogegrativa filter, eftersom koefficienterna kan anses som resultat av att linjär regression utförs för att uttrycka signalvärden som en funktion av tidigare signalvärden. Förhållandet mellan FIR - och IIR-filter kan tydligt ses i en linjär konstant-koefficientskillnadsekvation, dvs att ange en viktad summa av utgångar som är lika med en viktad summa av ingångar. Detta är som ekvationen som vi gav tidigare för orsakssystemet FIR-filter, förutom att förutom den viktiga summan av ingångar, har vi också en viktad summa av utgångar. Om vi ​​vill tänka på detta som ett förfarande för att generera produktionsprover behöver vi omordna ekvationen för att få ett uttryck för det aktuella utgångsprovet y (n), Adoptera konventionen att a (1) 1 (t. ex. genom att skala andra som och bs) kan vi bli av med 1a (1) termen: y (n) b (1) x (n) b (2) x (n-1). B (Nb1) x (n-nb) - a (2) y (n-1) -. - a (Na1) y (n-na) Om alla a (n) andra än a (1) är noll, minskar detta till vår gamla vän det kausal FIR-filtret. Detta är det allmänna fallet med ett (kausal) LTI-filter, och implementeras av MATLAB-funktionsfiltret. Låt oss se på fallet där b-koefficienterna utom b (1) är noll (i stället för FIR-fallet, där a (n) är noll): I det här fallet beräknas det aktuella utgångsprovet y (n) som en viktad kombination av det aktuella ingångsprovet x (n) och de tidigare utgångsproverna y (n-1), y (n-2) osv. För att få en uppfattning om vad som händer med sådana filter kan vi börja med fallet där Det vill säga det aktuella utgångsprovet är summan av det aktuella ingångsprovet och hälften av det föregående utgångsprovet. Tja, ta en insatsimpuls genom några steg, en åt gången. Det borde vara tydligt vid denna punkt att vi enkelt kan skriva ett uttryck för nth-utmatningsprovvärdet: det är bara (Om MATLAB räknas från 0, skulle det bara vara .5n). Eftersom det vi beräknar är systemets impulsrespons, har vi visat genom exempel att impulsresponset faktiskt kan få oändligt många icke-nollprover. För att implementera detta triviella första ordningens filter i MATLAB kunde vi använda filter. Samtalet kommer att se ut så här: och resultatet är: Är denna verksamhet verkligen fortfarande linjär? Vi kan se på detta empiriskt: För en mer allmän metod, överväga värdet av ett utmatningsprov y (n). Genom successiv substitution kan vi skriva detta eftersom det här är precis som vår gamla vän sammanfogningsformen för ett FIR-filter, med impulssvaret från uttrycket .5k. Och längden på impulssvaret är oändligt. De samma argumenten som vi brukade visa att FIR-filter var linjära kommer nu att tillämpas här. Hittills kan det tyckas som mycket väsen om inte mycket. Vad är den här hela undersökningsgruppen bra för Tja, svara på den här frågan i steg, med ett exempel. Det är inte en stor överraskning att vi kan beräkna en samplad exponentiell genom rekursiv multiplikation. Låt oss titta på ett rekursivt filter som gör något mindre uppenbart. Denna gång gör det väl ett andra ordningens filter, så att samtalet till filtret kommer att vara av formen. Låt oss ange den andra utmatningskoefficienten a2 till -2cos (2pi40) och den tredje utgångskoefficienten a3 till 1 och titta på impulsen svar. Inte särskilt användbar som ett filter, men det genererar en samplad sinusvåg (från en impuls) med tre multiplikat-adds per prov. För att förstå hur och varför det gör det, och hur rekursiva filter kan utformas och analyseras i Det mer generella fallet måste vi gå tillbaka och ta en titt på några andra egenskaper av komplexa tal, på vägen till förståelsen av z-transformen. Vilka är nackdelarna med att flytta medelfilteret när det används med tidsseriedata Heres a MATLAB Exempel för att se effekten av löpmedel. Exempelvis eliminerar filtret till en signal med en period av cirka 10,09082 helt den signalen. Eftersom storleken av frekvensresponsen är det absoluta komplexfrekvenssvaret är dessutom magnitudsvaret negativt mellan 0,3633 och mellan 0,4546 och Nyquist-frekvensen. Alla signalkomponenter med frekvenser inom dessa intervall speglas på t-axeln. Som ett exempel försöker vi en sinusvåg med en period på 7.0000, t. ex. en frekvens av ungefär 0,1429, som ligger inom det första intervallet med ett negativt magnitudsvar: t (1: 100) x10 2sin (2pit7) b10 en (1,11) 11 m10 längd (b10) y10 filter (b10,1, x10 ) y10 y10 (1 (m10-1) 2: änd - (m10-1) 2,1) y10 (end1: endm10-1,1) nollor (m10-1,1) plot (t, x10, t, y10 ) Här är amplitudsvaret hos filtret som visar nollor och klippning: h, w freqz (b10,1,512) f 1w (2pi) magnitud abs (h) plot (f, magnitude) Sinusvågen med en period av 7 upplevelser en amplitudminskning av t. ex. ca 80 men också ändrat tecken som du kan se från tomten. Eliminering av vissa frekvenser och signalflipning har en viktig konsekvens vid tolkning av orsakssamband i jordvetenskaper. Dessa filter, även om de erbjuds som standard i kalkylprogram för utjämning, bör därför undvikas helt. Som ett alternativ bör filter med ett specifikt frekvenssvar användas, till exempel ett Butterworth lågpassfilter. Rekommendera 2 Rekommendationer Philippe de Peretti mitten Universit Paris 1 Panthon-Sorbonne, Paris, Frankrike En bra affär skulle använda strukturella tidsserier, och därmed den locar linjära trendmodellen som i grund och botten är en IMA-modell. Jag föreslår att du tittar på Durbin och Koopman (2001) om Kalmans filtreringsmetoder. Att använda Kalman filter är optimalt i min synvinkel. Rekommendera 1 Rekommendation Hi Bilal Esmael, viktfunktionen hos ditt glidande medelfilter bör vara symmetrisk. I annat fall förskjuts de filtrerade värdena i fas: beroende på viktfunktionens struktur kan faslagringen nå hälften av viktfunktionens längd. Till exempel: Ett ensidigt Kalman Filter har en asymmetrisk viktfunktion. Var försiktig när du tolkar de filtrerade värdena i båda ändarna av en tidsserie, de har alltid en strukturell faslagring alltid. Med vänliga hälsningar, Michael HeinertNär följande är ett hårdkodat 3-punktsviktssymmetriskt glidande medelfilter: Så mina antaganden för hur ett n-punktsviktssymmetriskt glidande medelfilter skulle fungera är följande: Mitt slutmål är att skapa ett viktat symmetriskt glidande medelvärde filter som har ett modulärt antal punkter över vilka det kan vara genomsnittligt. Den del som verkligen får mig är vikten själv, och medan jag är säker på att en nestad slinga av något slag skulle göra tricket, kan jag inte se hur jag ens skulle börja något sådant. Tack för att du har tagit dig tid att inspektera min fråga, vilken feedback som helst skulle uppskattas. Välj ditt landdokumentation I det här exemplet visas hur du använder rörliga genomsnittsfilter och resampling för att isolera effekten av periodiska komponenter på tidstimmen vid timme-temperaturavläsningar, samt ta bort oönskade linjeljud från en öppen spänningsmätning. Exemplet visar också hur man släpper nivån på en klocksignal samtidigt som du håller kanterna genom att använda ett medianfilter. Exemplet visar också hur man använder ett Hampel-filter för att ta bort stora utjämnare. Motivationsutjämning är hur vi upptäcker viktiga mönster i våra data medan vi lämnar ut saker som är oväsentliga (dvs brus). Vi använder filtrering för att utföra denna utjämning. Målet med utjämning är att producera långsamma värdeförändringar så att det blir lättare att se trender i våra data. Ibland kan du, när du granskar inmatningsdata, glömma data för att se en trend i signalen. I vårt exempel har vi en uppsättning temperaturavläsningar i Celsius varje timme på Logans flygplats för hela januari månad 2011. Observera att vi visuellt kan se vilken effekt dagtid har på temperaturavläsningarna. Om du bara är intresserad av den dagliga temperaturvariationen under månaden, bidrar de timliga fluktuationerna bara med ljud, vilket kan göra det svårt att skilja de dagliga variationerna. För att ta bort effekten av tiden på dagen skulle vi nu vilja släta ut våra data genom att använda ett glidande medelfilter. Ett rörligt medelfilter I sin enklaste form tar ett glidande medelfilter av längd N genomsnittet av varje N på varandra följande prover av vågformen. För att tillämpa ett glidande medelfilter till varje datapunkt konstruerar vi våra koefficienter i vårt filter så att varje punkt är lika viktad och bidrar 124 till det totala genomsnittet. Detta ger oss medeltemperaturen över varje 24-timmarsperiod. Filterfördröjning Observera att den filtrerade utsignalen är försenad med cirka tolv timmar. Detta beror på att vårt glidande medelfilter har en fördröjning. Varje symmetriskt filter med längd N kommer att ha en fördröjning av (N-1) 2 prover. Vi kan redovisa denna försening manuellt. Extraherande medelskillnader Alternativt kan vi också använda det glidande medelfiltret för att få en bättre uppskattning av hur tiden på dagen påverkar den totala temperaturen. För att göra detta, dras först av de jämnda data från timme temperaturmätningarna. Därefter segmentera de olika uppgifterna i dagar och ta medeltalet över alla 31 dagar i månaden. Utdragning av toppkuvert Ibland vill vi också ha en jämn varierande uppskattning av hur höga och låga värdena på vår temperatursignal ändras dagligen. För att göra detta kan vi använda kuvertfunktionen för att ansluta extrema höjder och lågor som detekteras över en delmängd av 24-timmarsperioden. I det här exemplet ser vi till att det finns minst 16 timmar mellan varje extremt hög och extrem låg. Vi kan också få en känsla av hur höga och låga trender är genom att ta medelvärdet mellan de två ytterligheterna. Viktiga rörliga genomsnittsfiltre Andra typer av rörliga genomsnittliga filter viktar inte varje prov lika. Ett annat vanligt filter följer binomial expansion av (12,12) n Denna typ av filter approximerar en normal kurva för stora värden på n. Det är användbart för att filtrera ut högfrekventa ljud för små n. För att hitta koefficienterna för binomialfiltret, konvolvera 12 12 med sig själv och sedan iterativt konvolvera utgången med 12 12 ett föreskrivet antal gånger. I det här exemplet använder du fem totala iterationer. Ett annat filter som liknar det gaussiska expansionsfiltret är exponentiell glidande medelfilter. Denna typ av viktat glidande medelfilter är lätt att konstruera och kräver inte en stor fönsterstorlek. Du justerar ett exponentiellt viktat glidande medelfilter med en alfaparameter mellan noll och en. Ett högre värde på alfa kommer att ha mindre utjämning. Zooma in på avläsningarna för en dag. Välj ditt land

Comments

Popular posts from this blog

What Is Optioner Utnyttjade

Jak Grad ‡ Na Forexie

Glidande Genomsnittet Två Linjer