Friday, October 14, 2016

Bewegende gemiddelde filter kode matlab

Geskep op Woensdag 8 Oktober, 2008 20:04 Laas Opdateer op Donderdag, Maart 14, 2013 01:29 Geskryf deur Batuhan Osmanoglu Hits: 38977 bewegende gemiddelde In Matlab myself dikwels ek 'n behoefte aan die gemiddeld van die data wat ek het om die geraas 'n bietjie te verminder bietjie. Ek het n paar funksies te doen presies wat ek wil hê, maar matlabs gebou in filter funksie werk redelik goed sowel. Hier Siek skryf oor 1D en 2D gemiddeld van data. 1D filter kan verwesenlik word deur die filter funksie. Die filter funksie vereis ten minste drie insette parameters: die teller koëffisiënt vir die filter (b), die deler koëffisiënt vir die filter (a), en die data (X) natuurlik. 'N loop gemiddelde filter kan gedefinieer word deur eenvoudig: Vir 2D data kan ons die Matlabs filter2 funksie gebruik. Vir meer inligting oor hoe die filter werk, kan jy tik: Hier is 'n vinnige en vuil implementering van 'n 16 deur 16 bewegende gemiddelde filter. Eerstens moet ons die filter te definieer. Sedert alles wat ons wil hê, is gelyk bydrae van alle bure kan ons net gebruik om die kinders funksie. Ons verdeel alles met 256 (1616), aangesien ons nie wil hê dat die algemene vlak (amplitude) van die sein verander. Om die filter kan ons net die volgende Hier sê van toepassing is die resultate vir fase van 'n Kong interferogram. In hierdie geval Range is in Y-as en Azimuth is gekarteer op X-as. Die filter was 4 pixels wyd in Range en 16 pixels wyd in Azimuth. Teken SearchDocumentation Hierdie voorbeeld toon die aanbevole workflow vir die opwekking van C-kode van 'n MATLAB funksie met behulp van die codegen opdrag. Dit is die stappe: 1. Voeg die codegen opdrag aan die MATLAB funksie aan te dui dat dit bedoel is vir kodegenerasie. Hierdie richtlijn stel ook die MATLAB-kode ontleder by waarskuwings en foute spesifieke identifiseer MATLAB vir kodegenerasie. 2. Genereer 'n MEX funksie om seker te maak dat die MATLAB-kode is geskik vir kodegenerasie. As foute, moet jy dit op te los voordat genereer C-kode. 3. Toets die MEX funksie in MATLAB om te verseker dat dit funksioneel ekwivalent aan die oorspronklike MATLAB kode en dat geen run-time foute. 4. Genereer C-kode. 5. Ondersoek die C-kode. Voorvereistes Daar is geen voorvereistes vir hierdie voorbeeld. Skep 'n nuwe gids en kopieer Relevante lêers Die volgende kode sal 'n gids in jou huidige werk gids (PWD) te skep. Die nuwe gids sal slegs die lêers wat relevant is vir hierdie voorbeeld is bevat. As jy nie wil hê dat die huidige gids beïnvloed (of as jy nie lêers in hierdie gids kan genereer), moet jy die gids werk verander. Harloop Opdrag: Skep 'n nuwe gids en kopieer Relevante lêers Oor die averagingfilter Function Die averagingfilter. m funksie dien as 'n gemiddelde filter op die insetsein dit neem 'n inset vektor van waardes en bere 'n gemiddelde vir elke waarde in die vektor. Die uitset vektor is dieselfde grootte en vorm as die insette vektor. Kies jou CountryDocumentation tsmovavg uitset tsmovavg (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 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 SidebarMoving-Gemiddelde Filter van Verkeer data Hierdie voorbeeld wys hoe om verkeersvloei data glad met behulp van 'n bewegende gemiddelde filter met 'n 4-uur gly venster. Die volgende verskilvergelyking beskryf 'n filter wat gemiddeldes die huidige uur en die drie vorige uur van data. Voer die verkeer data en die kolom van voertuig tel toewys aan die vektor x is. Skep die filter koëffisiënt vektore. Bereken 4-uur bewegende gemiddelde van die data, en plot beide die oorspronklike data en die gefilterde inligting. 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 land


No comments:

Post a Comment