Bewegende Gemiddelde Konvolusie Matlab


29 September, 2013 Moving gemiddeld konvolusie Wat is bewegende gemiddelde en wat is dit goed vir Hoe beweeg gemiddelde gedoen deur die gebruik van konvolusie Moving gemiddelde is 'n eenvoudige operasie gewoonlik gebruik om geraas van 'n sein te onderdruk: ons die waarde van elke punt te stel om die gemiddeld van die waardes in die buurt. Deur 'n formule: Hier x is die insette en y is die uittreesein, terwyl die grootte van die venster is w, veronderstel vreemd te wees. Die formule hierbo beskryf 'n simmetriese werking: die monsters geneem word van beide kante van die werklike punt. Hier is 'n werklike lewe voorbeeld. Die punt waarop die venster eintlik gelê is rooi. Waardes buite x veronderstel is om nulle wees: om te speel en sien die gevolge van bewegende gemiddelde, 'n blik op hierdie interaktiewe demonstrasie. Hoe om dit te doen deur konvolusie Soos jy dalk herken het, die berekening van die eenvoudige bewegende gemiddelde is soortgelyk aan die konvolusie: in beide gevalle 'n venster is gegly langs die sein en die elemente in die venster word opgesom. So, gee dit 'n probeer om dieselfde ding te doen deur gebruik te maak van konvolusie. Gebruik die volgende parameters: Die verlangde uitset is: As eerste benadering, laat ons probeer om dit wat ons kry deur convolving die x sein deur die volgende k kern: Die uitset is presies drie keer groter as die verwagte. Dit kan ook gesien word dat die uitset waardes is die opsomming van die drie elemente in die venster. Dit is as gevolg tydens konvolusie die venster gly langs, al die elemente daarin word vermenigvuldig met een en dan opgesom: yk 1 cdot x 1 cdot x 1 cdot x Om die gewenste waardes van y kry. die uitset sal verdeeld wees teen 3: deur 'n formule insluitende die afdeling: Maar sou dit nie wees optimale om die afdeling te doen tydens konvolusie Hier kom die idee deur herrangskik die vergelyking: So sal ons die volgende k kern gebruik: In hierdie manier waarop ons sal kry die verlangde uitset: In die algemeen: as ons wil doen bewegende gemiddelde deur konvolusie 'n venster grootte van w. Ons sal gebruik maak van die volgende k kern: 'n eenvoudige funksie doen die bewegende gemiddelde is: 'n Voorbeeld gebruik is: Im op soek na 'n bietjie van riglyne oor die gebruik CONVN te bereken bewegende gemiddeldes in een dimensie op 'n 3d matriks. Im 'n bietjie vasgevang op die daarby van die kern onder die enjinkap en ek hoop iemand dalk in staat wees om die gedrag te verduidelik vir my. 'N Soortgelyke post wat nog vir my 'n bietjie verward is hier: Ek het daagliks rivier en weer vloei data vir 'n waterskeiding in verskillende bron plekke. So het die matriks is as dit so is, verdof 1 (die rye) verteenwoordig elke webwerf dowwe 2 (die kolomme) verteenwoordig die datum dowwe 3 (die bladsye) verteenwoordig die verskillende tipe meting (rivier hoogte, vloei, reënval, ens) Die doel is om te probeer en gebruik CONVN 'n 21 dag bewegende gemiddelde te neem op elke terrein, vir elke waarneming punt vir elke veranderlike. Soos ek dit verstaan, moet ek net in staat wees om aa kern gebruik soos: Ek het probeer rondspeel en geskep 'n ander kern wat ook moet werk (ek dink) en stel ker2 as: Die resultate moenie heeltemal wedstryd en im wonder of ek die dimensies verkeerde hier vir die kern. Enige leiding word opreg waardeer. BTW, jy het 'n simmetriese kern, en so daarby behoort geen invloed op die konvolusie uitset hê. Wat jy aangedui het is 'n standaard beweeg gemiddelde kern, en so konvolusie moet werk in die vind van die bewegende gemiddelde as wat jy verwag. maar I39m 'n bietjie verward, want jy het die bokant doesn39t werk uitvoering maak rayryeng 31 Mei toe 15 20:17 Dit is heeltemal aan jou :). Die vraag wat jy het 'n geldige een (geen woordspeling bedoel) wat reis op 'n klomp mense. As jy wil hê dit moet bly, kan ek 'n antwoord wat 'n opsomming van wat ons het gepraat oor skryf. As jy wil trek / u antwoord te verwyder, that39s nie 'n probleem nie. Laat my weet wat jy wil uitvoering maak rayryeng 31 Mei 15 kan doen by 20:39 Te oordeel aan die konteks van jou vraag, jy het 'n 3D Matrix en jy wil die bewegende gemiddelde van elke ry te vind onafhanklik oor die hele 3D snye. Die kode hierbo moet werk (die eerste geval). Maar die geld vlag terug 'n matriks waarvan die grootte is geldig ten opsigte van die grense van die konvolusie. Neem 'n blik op die eerste punt van die pos wat jy gekoppel is aan vir meer besonderhede. Spesifiek, sal die eerste 21 inskrywings vir elke ry vermiste wees as gevolg van die geldige vlag. Sy net jy die 22 toetrede van elke ry nie die konvolusie kern geword heeltemal vervat in 'n ry van die matriks en sy uit daardie punt waar jy geldige resultate te kry (geen woordspeling bedoel). As youd graag hierdie inskrywings op die grense sien, dan sal jy nodig het om dieselfde vlag gebruik as jy wil dieselfde grootte matriks as die insette of die volle vlag (wat is standaard) in stand te hou wat jy die grootte van die uitset vanaf gee die mees ekstreme buiterande, maar hou in gedagte dat die bewegende gemiddelde sal gedoen word met 'n klomp van nulle en so die eerste 21 inskrywings wouldnt wees wat jy in elk geval verwag. Maar as Im vertolking van wat jy vra, dan is die geld vlag is wat jy wil hê, maar hou in gedagte dat jy 21 inskrywings ontbreek om te akkommodeer vir die rand gevalle sal hê. Alles in ag genome, moet jou kode te werk, maar wees versigtig hoe jy die resultate te interpreteer. BTW, jy het 'n simmetriese kern, en so daarby behoort geen invloed op die konvolusie uitset hê. Wat jy aangedui het is 'n standaard beweeg gemiddelde kern, en so konvolusie moet werk in die vind van die bewegende gemiddelde as jy expect. The Scientist en Ingenieurs Guide to Digital Signal Processing Deur Steven W. Smith, Ph. D. Soos die naam aandui, die bewegende gemiddelde filter bedryf deur gemiddeld 'n aantal punte van die insetsein aan elke punt in die uitsetsein produseer. In vergelyking vorm, dit is geskrywe: Waar is die insetsein, is die uitset sein, en M is die aantal punte in die gemiddelde. Byvoorbeeld, in 'n 5 punt bewegende gemiddelde filter, punt 80 in die uitsetsein word gegee deur: As 'n alternatief, kan die groep punte van die insetsein simmetries gekies om die uitset punt: Dit stem ooreen met die verandering van die opsomming in vergelyking . 15-1 van: J 0 tot M -1 aan: J - (M -1) / 2 tot (m -1) / 2. Byvoorbeeld, in 'n 10 punt bewegende gemiddelde filter, die indeks, j. kan hardloop 0-11 (een kant gemiddelde) of -5 tot 5 (simmetriese gemiddelde). Simmetriese gemiddelde vereis dat M wees 'n onewe getal. Programmering is 'n bietjie makliker met die punte op slegs een kant egter hierdie produseer 'n relatiewe verskuiwing tussen die inset en uitset seine. Jy moet besef dat die bewegende gemiddelde filter is 'n konvolusie gebruik van 'n baie eenvoudige filter kern. Byvoorbeeld, 'n 5 punt filter het die filter kern: 82300, 0, 1/5, 1/5, 1/5, 1/5, 1/5, 0, 08230. Dit is die bewegende gemiddelde filter is 'n konvolusie van die insetsein met 'n vierkantige pols met 'n oppervlakte van een. Tabel 15-1 toon 'n program om die bewegende gemiddelde filter. Documentation tsmovavg uitset tsmovavg implementeer (tsobj, S, lag) gee terug Die eenvoudige bewegende gemiddeld vir finansiële tydreekse voorwerp, tsobj. lag dui die aantal vorige datapunte gebruik met die huidige data punt by die berekening van die bewegende gemiddelde. uitset tsmovavg (vektor, s, lag, dowwe) gee terug Die eenvoudige bewegende gemiddelde vir 'n vektor. lag dui die aantal vorige datapunte gebruik met die huidige data punt by die berekening van die bewegende gemiddelde. uitset tsmovavg (tsobj, e, timeperiod) gee terug Die eksponensiële geweegde bewegende gemiddelde vir finansiële tydreekse voorwerp, tsobj. Die eksponensiële bewegende gemiddelde is 'n geweegde bewegende gemiddelde, waar timeperiod spesifiseer die tydperk. Eksponensiële bewegende gemiddeldes te verminder die lag deur die toepassing van meer gewig aan onlangse pryse. Byvoorbeeld, 'n 10-tydperk eksponensiële bewegende gemiddelde gewigte die mees onlangse prys deur 18.18. Eksponensiële Persentasie 2 / (TIMEPER 1) of 2 / (WINDOWSIZE 1). uitset tsmovavg (vektor, e, timeperiod, dowwe) gee terug Die eksponensiële geweegde bewegende gemiddelde vir 'n vektor. Die eksponensiële bewegende gemiddelde is 'n geweegde bewegende gemiddelde, waar timeperiod spesifiseer die tydperk. Eksponensiële bewegende gemiddeldes te verminder die lag deur die toepassing van meer gewig aan onlangse pryse. Byvoorbeeld, 'n 10-tydperk eksponensiële bewegende gemiddelde gewigte die mees onlangse prys deur 18.18. (2 / (timeperiod 1)). uitset tsmovavg (tsobj, t, numperiod) gee terug Die driehoekige bewegende gemiddelde vir finansiële tydreekse voorwerp, tsobj. Die driehoekige bewegende gemiddelde dubbel glad die data. tsmovavg word bereken dat die eerste eenvoudige bewegende gemiddelde met venster breedte van oordek (numperiod 1) / 2. Dan bereken dit 'n tweede eenvoudige bewegende gemiddelde op die eerste bewegende gemiddelde met dieselfde venster grootte. uitset tsmovavg (vektor, t, numperiod, dowwe) gee terug Die driehoekige bewegende gemiddelde vir 'n vektor. Die driehoekige bewegende gemiddelde dubbel glad die data. tsmovavg word bereken dat die eerste eenvoudige bewegende gemiddelde met venster breedte van oordek (numperiod 1) / 2. Dan bereken dit 'n tweede eenvoudige bewegende gemiddelde op die eerste bewegende gemiddelde met dieselfde venster grootte. uitset tsmovavg (tsobj, w, gewigte) gee terug Die geweegde bewegende gemiddelde vir die finansiële tydreekse voorwerp, tsobj. deur die verskaffing van gewigte vir elke element in die bewegende venster. Die lengte van die gewig vektor bepaal die grootte van die venster. As groter gewig faktore word gebruik vir meer onlangse pryse en kleiner faktore vir vorige pryse, die neiging is meer ontvanklik vir onlangse wysigings. uitset tsmovavg (vektor, w, gewigte, dowwe) gee terug Die geweegde bewegende gemiddelde vir die vektor deur die verskaffing van gewigte vir elke element in die bewegende venster. Die lengte van die gewig vektor bepaal die grootte van die venster. As groter gewig faktore word gebruik vir meer onlangse pryse en kleiner faktore vir vorige pryse, die neiging is meer ontvanklik vir onlangse wysigings. uitset tsmovavg (tsobj, m, numperiod) gee terug Die gemodifiseerde bewegende gemiddelde vir die finansiële tydreekse voorwerp, tsobj. Die aangepaste bewegende gemiddelde is soortgelyk aan die eenvoudige bewegende gemiddelde. Oorweeg die argument numperiod die lag van die eenvoudige bewegende gemiddelde wees. Die eerste gewysigde bewegende gemiddelde bereken word soos 'n eenvoudige bewegende gemiddelde. Daaropvolgende waardes word bereken deur die toevoeging van die nuwe prys en trek die laaste gemiddelde van die gevolglike bedrag. uitset tsmovavg (vektor, m, numperiod, dowwe) gee terug Die gemodifiseerde bewegende gemiddelde vir die vektor. Die aangepaste bewegende gemiddelde is soortgelyk aan die eenvoudige bewegende gemiddelde. Oorweeg die argument numperiod die lag van die eenvoudige bewegende gemiddelde wees. Die eerste gewysigde bewegende gemiddelde bereken word soos 'n eenvoudige bewegende gemiddelde. Daaropvolgende waardes word bereken deur die toevoeging van die nuwe prys en trek die laaste gemiddelde van die gevolglike bedrag. dowwe 8212 dimensie te bedryf saam positiewe heelgetal met waarde 1 of 2 Dimension te bedryf saam, wat as 'n positiewe heelgetal met 'n waarde van 1 of 2. dowwe is 'n opsionele insette argument, en as dit nie gebruik word as 'n inset, die verstek waarde 2 word aanvaar. Die standaard van dowwe 2 dui op 'n ry-georiënteerde matriks, waar elke ry is 'n veranderlike en elke kolom is 'n waarneming. As dowwe 1. die insette is veronderstel om 'n kolomvektor of-kolom-georiënteerde matriks, waar elke kolom is 'n veranderlike en elke ry 'n waarneming wees. e 8212 aanwyser vir eksponensiële bewegende gemiddelde karakter vektor Eksponensiële bewegende gemiddelde is 'n geweegde bewegende gemiddelde, waar timeperiod is die tydperk van die eksponensiële bewegende gemiddelde. Eksponensiële bewegende gemiddeldes te verminder die lag deur die toepassing van meer gewig aan onlangse pryse. Byvoorbeeld, 'n tydperk van 10 eksponensiële bewegende gemiddelde gewigte die mees onlangse prys deur 18.18. Eksponensiële Persentasie 2 / (TIMEPER 1) of 2 / (WINDOWSIZE 1) timeperiod 8212 Lengte van tyd positiewe getal Kies Jou CountryUsing MATLAB, hoe kan ek die 3-daagse bewegende gemiddelde van 'n spesifieke kolom van 'n matriks en voeg die bewegende gemiddelde om daardie matriks ek probeer om die 3-daagse bewegende gemiddelde van onder bereken op die top van die matriks. Ek het my kode voorsien: Gegewe die volgende matriks A en masker: Ek het probeer die implementering van die conv opdrag maar Ek ontvang 'n fout. Hier is die conv opdrag Ek het probeer om te gebruik op die 2de kolom van matriks A: Die uitset Ek verlang word in die volgende matriks: Indien u enige voorstelle, sou ek dit baie waardeer. Dankie vir kolom 2 van matriks A, ek berekening van die 3-daagse bewegende gemiddelde soos volg en die plasing van die resultaat in kolom 4 van matriks A (Ek herdoop matriks n as 39desiredOutput39 net ter illustrasie). Die 3-dag gemiddeld van 17, 14, 11, is 14 die 3-dag gemiddeld van 14, 11, 8 is 11 die 3-dag gemiddeld van 11, 8, 5 is 8 en die 3-dag gemiddeld van 8, 5, 2 is 5. Daar is geen waarde in die onderste 2 rye vir die 4de kolom omdat die berekening vir die 3-daagse bewegende gemiddelde begin aan die onderkant. Die 39valid39 uitset sal nie gewys word tot ten minste 17, 14, en 11. Hopelik sal hierdie sin uitvoering maak Aaron 12 Junie 13 by 01:28 1 Antwoord In die algemeen is dit sal help as jy die fout sal wys. In hierdie geval jy doen twee dinge verkeerd: Eerste het jou konvolusie te verdeel deur drie (of die lengte van die bewegende gemiddelde) Tweedens, let op die grootte van c. Jy kan nie net pas c in 'n. Die tipiese manier om 'n bewegende gemiddelde sou wees om dieselfde te gebruik, maar dit nie die geval is lyk wat jy wil hê. In plaas jy gedwing word om 'n paar lyne gebruik:

Comments