Thursday, 28 December 2017

Rekursiv glidande medelvärde filter matlab


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 innebär 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 snart skulle undersökas. Om vi ​​symboliserar ingångarna som värden för en vektor x. och utgångarna 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å det aktuella och tidigare inmatningsprovet 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 uppdragsinställningar, där x är en N-längdsvektor av ingångsprover och b är en M-längdvektor av vikter. För att hantera specialfallet 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 några 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 skift-invariant. 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 från 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 ett systems impulsrespons är det vanligen ingen skillnad mellan dessa två eftersom alla icke-inledande prover av ingången är noll: Eftersom ett system av detta slag är linjärt och inskjutet, 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 på 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örutsäga 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) fas 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 utmatningens DFT 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 utgångens amplitudspektrum och ingångens . När det gäller fasspektret, vinkel (c1c2) vinkel (c1) - vinkel (c2) för alla c1, c2 (med förbehåll att faserna skiljer sig 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 2pi 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 för 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 rörliga medelfilter. 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 slags 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 tidsinvariant filter. Dessa filter kallas ibland rekursiva eftersom värdet av tidigare utdata (såväl som 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 ibland även autogegressiva filter, eftersom koefficienterna kan anses som resultat av att linjär regression gör att signalvärdena uttrycks 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 viktade 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 måste 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 reduceras 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 det nth utmatningsprovvärdet: det är bara (Om MATLAB räknas från 0, skulle detta helt enkelt 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 titta empiriskt på det här: För en mer allmän inställning, ö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, FU-filtrets sammanfogningssumma, 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 verka 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. Den här gången gör det väl ett andraordningsfilter, 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-adder 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 hos komplexa tal, på vägen till att förstå z-transformen. Dokumentation Beskrivning yulewalk konstruerar rekursiva IIR digitala filter med hjälp av minsta kvadrater som passar till ett specificerat frekvenssvar . b, en yulewalk (n, f, m) returnerar radvektorer, b och a. innehållande n1-koefficienterna i ordning n IIR-filtret, vars frekvensmagnetegenskaper approximativt motsvarar de som ges i vektorerna f och m: f är en vektor av frekvenspunkter, specificerade i intervallet mellan 0 och 1, där 1 motsvarar hälften av provfrekvensen (Nyquist-frekvensen). Den första punkten f måste vara 0 och den sista punkten 1. Alla mellanpunkter måste vara i ökande ordning. Dubbla frekvenspunkter är tillåtna, vilket motsvarar steg i frekvenssvaret. m är en vektor som innehåller önskat magnitudsvar vid de punkter som anges i f. f och m måste vara lika långa. plot (f, m) visar filterformen. Utgångsfilterkoefficienterna är beställda i fallande krafter av z. B (z) A (z) b (1) b (2) z x2212 1 x22EF b (n1) z x2212 na (1) a (2) z x2212 1 x22EF a (n1) z x2212 n När du specificerar frekvensrespons, undvik alltför skarpa övergångar från passband till stoppband. Du kan behöva experimentera med lutningen på övergångsområdet för att få den bästa filterdesignen. Välj din CountryDocumentation-utmatning tsmovavg (tsobj, s, lag) returnerar det enkla glidande medelvärdet för för finansiella tidsserieobjekt, tsobj. lagring anger antalet tidigare datapunkter som används med den aktuella datapunkten vid beräkning av glidande medelvärdet. output tsmovavg (vektor, s, lag, dim) returnerar det enkla glidande medlet för en vektor. lagring anger antalet tidigare datapunkter som används med den aktuella datapunkten vid beräkning av glidande medelvärdet. output tsmovavg (tsobj, e, timeperiod) returnerar det exponentiella vägda glidande medlet för finansiella tidsserieobjekt, tsobj. Det exponentiella glidande medlet är ett vägt rörligt medelvärde, där tidsperioden bestämmer tidsperioden. Exponentiella rörliga medelvärden minskar fördröjningen genom att tillämpa mer vikt på de senaste priserna. Ett 10-årigt exponentiellt glidande medel väger till exempel det senaste priset med 18,18. Exponentiell Procent 2 (TIMEPER 1) eller 2 (WINDOWSIZE 1). output tsmovavg (vektor, e, timeperiod, dim) returnerar det exponentiella viktade glidande medlet för en vektor. Det exponentiella glidande medlet är ett vägt rörligt medelvärde, där tidsperioden bestämmer tidsperioden. Exponentiella rörliga medelvärden minskar fördröjningen genom att tillämpa mer vikt på de senaste priserna. Ett 10-årigt exponentiellt glidande medel väger till exempel det senaste priset med 18,18. (2 (tidsperiod 1)). output tsmovavg (tsobj, t, numperiod) returnerar det triangulära glidande medlet för finansiella tidsserieobjekt, tsobj. Det triangulära glidande genomsnittet jämna ut dataen. tsmovavg beräknar det första enkla glidande medlet med fönsterbredd på taket (numperiod 1) 2. Då räknar man ut ett andra enkelt glidande medelvärde på det första glidande medlet med samma fönsterstorlek. output tsmovavg (vektor, t, numperiod, dim) returnerar det triangulära glidande medlet för en vektor. Det triangulära glidande genomsnittet jämna ut dataen. tsmovavg beräknar det första enkla glidande medlet med fönsterbredd på taket (numperiod 1) 2. Då räknar man ut ett andra enkelt glidande medelvärde på det första glidande medlet med samma fönsterstorlek. output tsmovavg (tsobj, w, vikter) returnerar det vägda glidande medlet för det finansiella tidsserieobjektet, tsobj. genom att leverera vikter för varje element i det rörliga fönstret. Vektorns längd bestämmer storleken på fönstret. Om större viktfaktorer används för senare priser och mindre faktorer för tidigare priser, är trenden mer mottaglig för de senaste ändringarna. output tsmovavg (vektor, w, vikter, dim) returnerar det vägda glidande medlet för vektorn genom att tillföra vikter för varje element i det rörliga fönstret. Vektorns längd bestämmer storleken på fönstret. Om större viktfaktorer används för senare priser och mindre faktorer för tidigare priser, är trenden mer mottaglig för de senaste ändringarna. output tsmovavg (tsobj, m, numperiod) returnerar det modifierade glidande medlet för det finansiella tidsserieobjektet, tsobj. Det modifierade glidande medlet liknar det enkla glidande medlet. Tänk på argumentet numperiod att vara fördröjningen av det enkla glidande medlet. Det första ändrade glidande medlet beräknas som ett enkelt glidande medelvärde. Efterföljande värden beräknas genom att lägga till det nya priset och subtrahera det senaste genomsnittet från den resulterande summan. output tsmovavg (vektor, m, numperiod, dim) returnerar det modifierade glidande medlet för vektorn. Det modifierade glidande medlet liknar det enkla glidande medlet. Tänk på argumentet numperiod att vara fördröjningen av det enkla glidande medlet. Det första ändrade glidande medlet beräknas som ett enkelt glidande medelvärde. Efterföljande värden beräknas genom att lägga till det nya priset och subtrahera det senaste genomsnittet från den resulterande summan. dim 8212 dimension för att fungera längs positivt heltal med värde 1 eller 2 Dimension för att fungera längs, specificerat som ett positivt heltal med ett värde av 1 eller 2. dim är ett valfritt inmatningsargument och om det inte ingår som en ingång, värde 2 antas. Standarden för dim 2 indikerar en radorienterad matris, där varje rad är en variabel och varje kolumn är en observation. Om dim 1. ingången antas vara en kolumnvektor eller kolumnorienterad matris, där varje kolumn är en variabel och varje rad en observation. e 8212 Indikator för exponentiell rörlig medelfunktionsvektor Exponentiell glidmedel är ett viktat glidande medelvärde, där timeperiod är tidsperioden för exponentiell glidande medelvärde. Exponentiella rörliga medelvärden minskar fördröjningen genom att tillämpa mer vikt på de senaste priserna. Till exempel väger ett 10-års exponentiellt glidande medel det senaste priset med 18,18. Exponentiell andel 2 (TIMEPER 1) eller 2 (WINDOWSIZE 1) timeperiod 8212 Tidsperiodens icke-negativa heltal Välj ditt land

No comments:

Post a Comment