Thursday 7 September 2017

Bewegende Gemiddelde Filter Dsp Kode


'N inleidende digitale filter Wel oop MicroModeler DSP en kies 'n digitale filter van die nutsbalk aan die bokant en sleep dit na ons aansoek. Wel kies 'n bewegende gemiddelde filter omdat sy een van die eenvoudigste vorme van filters. Nadat jy die filter sak, sal die uitstallings outomaties opgedateer. (Klik om MicroModeler DSP van stapel te stuur in 'n nuwe venster) Ons weet almal wat 'n gemiddelde is - voeg die getalle bymekaar en verdeel deur hoeveel daar is. 'N bewegende gemiddelde filter nie net dat. Dit slaan 'n geskiedenis van die laaste N getalle en uitgange hul gemiddelde. Elke keer as 'n nuwe getal kom in, is die gemiddelde effektief herbereken vanaf die gestoor monsters en 'n nuwe nommer is uitset. Die frekwensieweergawe van 'n filter Op die top-regs, sien ons die grafiek van grootte vs Frequency, of hoeveel verskillende frekwensies sal versterk of verminder word deur die bewegende gemiddelde filter. Soos jy kan verwag, gemiddeld die afgelope N monsters sal 'n soort van glad tot die sein, die behoud van die lae frekwensies en die verwydering van die hoë frekwensie van toepassing. Ons kan die getal van die vorige insette, of monsters wat dit gemiddeldes deur die aanpassing van die filter lengte, N. Deur die aanpassing van hierdie, kan ons sien dat ons 'n paar basiese beheer oor watter frekwensies kan slaag en wat weggegooi beheer. Die binnekant van 'n filter As ons kyk na die struktuur oog, kan ons sien wat die binnekant van 'n bewegende gemiddelde filter kan lyk. Die diagram is geannoteerde om te wys wat die verskillende simbole beteken. Die Z -1 simbole beteken vertraging deur 'n tyd monster en die simbole beteken voeg, of 'n kombinasie van die seine. Die pyle beteken vermeerder (dink versterk, te verminder of skaal) die sein deur die barmhartigheid aan die regterkant van die pyl bedrag. Vir 'n gemiddeld van 5 monsters, neem ons 'n vyfde (0.2) van die mees onlangse voorbeeld, 'n vyfde van die tweede mees onlangse voorbeeld en so aan. Die ketting van vertragings is 'n vertraging lyn met die insetsein word vertraag deur 'n bykomende tyd stap as jy voortgaan langs die vertraging lyn genoem. Die pyle is ook bekend as krane, sodat jy dit amper kon dink as krane soos die een in jou kombuis wasbak dat al 'n vyfde oop is. Jy kon dink die sein vloei in van links en word geleidelik vertraag as dit beweeg langs die vertraging lyn, dan geherkombineer in verskillende sterkpunte deur die krane na die uitset te vorm. Wat is die ekwivalent van die gemiddelde van die afgelope 5 monsters: Dit moet ook maklik om te sien dat die opbrengs van die filter sal wees. (Input t-N beteken die vertraagde insette van tyd t-N) In die praktyk die kode gegenereer deur MicroModeler DSP sal truuks gebruik om dit meer doeltreffend te doen, sodat net die eerste en laaste monsters nodig om betrokke te wees, maar die diagram is goed vir illustratiewe doeleindes. As jy dit kan verstaan, dan kan jy 'n idee wat 'n FIR filter is te kry. 'N FIR filter is identies aan die bewegende gemiddelde filter, maar in plaas van al die kraan sterkpunte wat dieselfde is, kan hulle anders wees. Hier het ons 'n bewegende gemiddelde filter en 'n FIR filter. Jy kan sien dat hulle struktureel dieselfde, die enigste verskil is die sterkpunte van die krane. Die volgende afdeling sal jou bekendstel aan Eindige Impulse Response (FIR) filters. Deur wisselende die kraan sterkpunte, kan ons naby aan enige frekwensieweergawe skep dat ons want. 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. Frequency Reaksie van bewegende gemiddelde filter en FIR Filtreer Vergelyk die frekwensieweergawe van die bewegende gemiddelde filter met dié van die gereelde FIR filter implementeer. Stel die koëffisiënte van die gereelde FIR filter as 'n reeks van afgeskaal 1s. Die skaal faktor is 1 / filterLength. Skep 'n dsp. FIRFilter System voorwerp en stel sy koëffisiënte te 1/40. Om die bewegende gemiddelde bereken, skep 'n dsp. MovingAverage System voorwerp met 'n gly venster met lengte 40 tot die bewegende gemiddelde bereken. Beide filters het dieselfde koëffisiënte. Die insette is Gaussiese wit ruis met 'n gemiddeld van 0 en 'n standaardafwyking van 1. Visualiseer die frekwensieweergawe van beide filters deur die gebruik van fvtool. Die frekwensie response pas presies, wat bewys dat die bewegende gemiddelde filter is 'n spesiale geval van die FIR filter. Ter vergelyking, sien die frekwensieweergawe van die filter sonder geraas. Vergelyk die filters frekwensie reaksie op dié van die ideale filter. Jy kan sien dat die hoof lob in die deurlaatband is nie plat en die rimpels in die stopband is nie beperk. Die bewegende gemiddelde filters frekwensieweergawe kom nie ooreen met die frekwensieweergawe van die ideale filter. Om 'n ideale FIR filter besef, verander die filter koëffisiënte 'n vektor wat nie 'n volgorde van afgeskaal 1s. Die frekwensieweergawe van die filter veranderinge en is geneig om nader aan die ideale filter reaksie beweeg. Ontwerp die filter koëffisiënte gebaseer op voorafbepaalde filter spesifikasies. Byvoorbeeld, ontwerp 'n equiripple FIR filter met 'n genormaliseerde afsnyfrekwensie van 0.1, 'n deurlaatband rimpeleffek van 0,5 en 'n stopband verswakking van 40 dB. Gebruik fdesign. lowpass om die filter spesifikasies en die ontwerp metode om die filter te ontwerp definieer. Die filters reaksie in die deurlaatband is amper plat (soortgelyk aan die ideale reaksie) en die stopband het beperkte equiripples. MATLAB en Simulink is geregistreerde handelsmerke van The MathWorks, Inc. Sien www. mathworks / handelsmerke vir 'n lys van ander handelsmerke in besit van die MathWorks, Inc. Ander produk of handelsmerk name is handelsmerke of geregistreerde handelsmerke van hul onderskeie eienaars. Kies jou CountryMoving Gemiddelde Filter (MA filter) laai. Die bewegende gemiddelde filter is 'n eenvoudige Low Pass FIR (Eindige Impulse Response) filter wat algemeen gebruik word vir glad 'n verskeidenheid van monsters data / sein. Dit neem M monsters van insette op 'n tyd en neem die gemiddelde van die M-monsters en produseer 'n enkele uitset punt. Dit is 'n baie eenvoudige LPF (laaglaatfilter) struktuur wat handig te pas kom vir wetenskaplikes en ingenieurs om ongewenste lawaaierige komponent filter van die beoogde data. As die filter lengte toeneem (die parameter M) die gladheid van die uitset verhoog, terwyl die skerp oorgange in die data gemaak word toenemend stomp. Dit impliseer dat die filter het 'n uitstekende tyd domein reaksie, maar 'n swak frekwensieweergawe. Die MA filter voer drie belangrike funksies: 1) Dit neem M insette punte, bere die gemiddelde van die M-punte en produseer 'n enkele uitset punt 2) As gevolg van die berekening / berekeninge betrokke. die filter stel 'n definitiewe bedrag van die vertraging 3) Die filter dien as 'n laaglaatfilter (met 'n swak frekwensiedomein reaksie en 'n goeie tyd domein reaksie). Matlab Kode: Na aanleiding van Matlab kode simuleer die tydgebied reaksie van 'n M-punt bewegende gemiddelde filter en ook plotte die frekwensieweergawe vir verskeie filter lengtes. Tyd Domain Reaksie: Op die eerste plot, ons het die insette wat gaan in die bewegende gemiddelde filter. Die insette is raserig en ons doel is om die geraas te verminder. Die volgende figuur is die uitset reaksie van 'n 3-punt bewegende gemiddelde filter. Dit kan afgelei word uit die figuur dat die 3-punt bewegende gemiddelde filter nie veel in die filter van die geraas gedoen het. Ons verhoog die filter krane tot 51-punte en ons kan sien dat die geraas in die uitset baie, wat uitgebeeld word in die volgende figuur verminder. Ons verhoog die krane verder tot 101 en 501 en ons kan waarneem dat selfs-al die geraas is amper nul, die oorgange is drasties afgestomp uit (kyk na die helling op die weerskante van die sein en vergelyk kan word met die ideale baksteenmuur oorgang in ons insette). Frekwensie: Van die frekwensieweergawe dit kan beweer dat die roll-off is baie stadig en die stop orkes verswakking is nie goed nie. Gegewe hierdie stop-band attenuasie, duidelik, die bewegende gemiddelde filter kan nie een band van frekwensies van 'n ander te skei. Soos ons weet dat 'n goeie vertoning in die tydgebied resultate in 'n swak vertoning in die frekwensiedomein, en omgekeerd. In kort, die bewegende gemiddelde is 'n buitengewoon goeie glad filter (die aksie in die tydgebied), maar 'n besonder slegte laaglaatfilter (die aksie in die frekwensiedomein) Eksterne skakel: aanbevole boeke: Primêre SidebarIs dit moontlik om te implementeer 'n bewegende gemiddelde in C sonder die behoefte aan 'n venster van monsters Ive het bevind dat ek 'n bietjie kan optimaliseer, deur die keuse van 'n venster grootte dis 'n krag van twee voorsiening te maak vir bietjie-verskuiwing in plaas van verdeel, maar nie dat daar 'n buffer sal lekker wees. Is daar 'n manier om 'n nuwe bewegende gemiddelde resultaat slegs as 'n funksie van die ou gevolg en die nuwe monster te druk definieer 'n voorbeeld bewegende gemiddelde, oor 'n venster van 4 monsters te wees: Voeg nuwe monster e: 'n bewegende gemiddelde kan rekursief geïmplementeer , maar vir 'n presiese berekening van die bewegende gemiddelde jy die oudste insette monster in die som (dws die 'n in jou voorbeeld) onthou. Vir 'n lengte N bewegende gemiddelde wat jy bereken: waar yn is die uitsetsein en xn is die insetsein. Aand. (1) kan rekursief geskryf word as sodat jy altyd moet die monster xn-N onthou om te bereken (2). Soos uitgewys deur Conrad Turner, kan jy 'n (oneindig lank) eksponensiële venster plaas, wat dit moontlik maak om die uitset net uit die verlede uitset en die huidige insette te bereken gebruik, maar dit is nie 'n standaard (ongeweegde) bewegende gemiddelde, maar 'n eksponensieel geweegde bewegende gemiddelde, waar monsters verder in die verlede kry 'n kleiner gewig, maar (ten minste in teorie) wat jy nooit iets vergeet nie (die gewigte kry net kleiner en kleiner vir monsters ver in die verlede). inisialiseer totale 0, count0 (elke keer sien 'n nuwe waarde toe een insette (scanf), een totalnewValue, een inkrement (telling), een kloof gemiddelde (totale / telling voeg) Dit sou 'n bewegende gemiddelde oor alle insette Om die gemiddelde bereken word oor net die laaste 4 insette, sal vereis 4 inputvariables, miskien kopiëring elke insette om 'n ouer inputvariable, dan berekening van die nuwe bewegende gemiddelde. as som van die 4 inputvariables, gedeel deur 4 (regs skuif 2 sal goed wees as al die insette was positiewe na die gemiddelde berekening te maak

No comments:

Post a Comment