Die bewegende gemiddelde as 'n Filter die bewegende gemiddelde is dikwels gebruik vir glad data in die teenwoordigheid van ruis. Die eenvoudige bewegende gemiddelde is nie altyd erken as die Eindige Impulse Response (FIR) filter dat dit, terwyl dit eintlik een van die mees algemene filters in seinverwerking. Die behandeling van dit as 'n filter kan vergelyk dit met byvoorbeeld met venster-sed filters (sien die artikels oor lae-pass. Hoë-pass. En orkes-pass en orkes-verwerp filters vir voorbeelde van diegene). Die groot verskil met dié filters is dat die bewegende gemiddelde is geskik vir seine waarvoor die nuttige inligting is vervat in die tydgebied. waarvan glad metings deur die gemiddeld is 'n uitstekende voorbeeld. 'N klein venster-sed filters, aan die ander kant, is sterk presteerders in die frekwensiedomein. met gelykmaking in klank verwerking as 'n tipiese voorbeeld. Daar is 'n meer gedetailleerde vergelyking van beide tipes filters in Time Domain teen frekwensiedomein Performance filters. As jy inligting soek wat beide die tyd en die frekwensie domein is belangrik, dan kan jy 'n blik op variasies op die bewegende gemiddelde het. wat bied 'n aantal geweegde weergawes van die bewegende gemiddelde wat beter op daardie is. Die bewegende gemiddelde lengte (N) kan gedefinieer word as geskryf soos dit tipies is geïmplementeer, met die huidige uitset monster as die gemiddelde van die vorige (N) monsters. Gesien word as 'n filter, die bewegende gemiddelde voer 'n konvolusie van die insette volgorde (xn) met 'n vierkantige pols van lengte (N) en hoogte (1 / N) (om die oppervlakte van die pols te maak, en dus die wins van die filter, een). In die praktyk is dit die beste om (N) vreemd neem. Hoewel 'n bewegende gemiddelde ook kan bereken word met behulp van 'n gelyke getal monsters, met behulp van 'n vreemde waarde vir (N) het die voordeel dat die vertraging van die filter 'n heelgetal van monsters sal wees nie, aangesien die vertraging van 'n filter met (N) monsters is presies ((N-1) / 2). Die bewegende gemiddelde kan dan presies in lyn wees met die oorspronklike data deur die verskuiwing dit deur 'n heelgetal van monsters. Tyd Domain Sedert die bewegende gemiddelde is 'n konvolusie met 'n vierkantige pols, sy frekwensieweergawe is 'n sed funksie. Dit maak dit iets soos die dubbele van die klein venster-sed filter, want dit is 'n konvolusie met 'n sed pols wat lei tot 'n vierkantige frekwensieweergawe. Dit is hierdie sed frekwensieweergawe dat die bewegende gemiddelde n swak presteerder in die frekwensiedomein maak. Maar dit doen baie goed in die tydgebied. Daarom is dit ideaal om data glad geraas te verwyder, terwyl op dieselfde tyd nog 'n vinnige stap reaksie (figuur 1) hou. Vir die tipiese byvoeging Wit Gaussiese ruis (SWGR) wat dikwels aanvaar, gemiddeld (N) monsters het die effek van die verhoging van die SNR met 'n faktor van (sqrt N). Sedert die geraas vir die individuele monsters is ongekorreleerd, daar is geen rede om elke monster anders te behandel. Vandaar die bewegende gemiddelde, wat elke monster dieselfde gewig gee, sal ontslae te raak van die maksimum bedrag van geraas vir 'n gegewe stap reaksie skerp. Implementering Omdat dit 'n FIR filter, kan die bewegende gemiddelde geïmplementeer deur konvolusie. Dit sal dan dieselfde doeltreffendheid (of die gebrek daaraan) as enige ander FIR filter. Maar dit kan ook rekursief geïmplementeer, in 'n baie doeltreffende manier. Dit volg direk uit die definisie dat hierdie formule is die gevolg van die uitdrukkings vir (yn) en (yn1), dit wil sê, waar ons sien dat die verandering tussen (yn1) en (yn) is dat 'n ekstra termyn (xn1 / N) verskyn aan die einde, terwyl die term (xn-N1 / N) van die begin af verwyder. In praktiese toepassings, is dit dikwels moontlik om uit te laat die verdeling deur (N) vir elke kwartaal deur vergoed vir die gevolglike wins van (N) in 'n ander plek. Dit rekursiewe implementering sal baie vinniger as konvolusie wees. Elke nuwe waarde van (y) kan bereken word met net twee toevoegings, in plaas van die (N) toevoegings wat vir 'n eenvoudige implementering van die omskrywing nodig sou wees. Een ding om op die uitkyk vir 'n rekursiewe implementering is dat afrondingsfoute sal ophoop. Dit mag of mag nie 'n probleem vir jou aansoek nie, maar dit beteken ook dat dit rekursiewe implementering eintlik beter met 'n heelgetal implementering sal werk as met swaai-punt getalle. Dit is nogal 'n ongewone, aangesien 'n drywende punt implementering is gewoonlik makliker. Die sluiting van dit alles moet wees dat jy nooit die nut van die eenvoudige bewegende gemiddelde filter in seinverwerking aansoeke moet onderskat nie. Filterontwerp Tool Hierdie artikel word aangevul met 'n Filter Ontwerp instrument. Eksperimenteer met verskillende waardes vir (N) en visualiseer die gevolglike filters. Probeer dit nowUsing MATLAB, hoe kan ek die 3-daagse bewegende gemiddelde van 'n spesifieke kolom van 'n matriks en voeg die bewegende gemiddelde op 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: 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 bewegende gemiddeldes 'n eenvoudige operasie gewoonlik gebruik om geraas van 'n onderdruk sein: ons stel die waarde van elke punt aan 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: Die wetenskaplike 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 tog 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 loop 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. Im op soek na 'n bietjie van riglyne oor die gebruik CONVN te bereken bewegende gemiddeldes in een dimensie op 'n 3d matriks te implementeer. 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 wat jy verwag.
No comments:
Post a Comment