Minulla on vektori ja haluan laskea sen liukuvan keskiarvon käyttäen leveysikkunaa 5. Esimerkiksi, jos kyseinen vektori on 1,2,3,4,5,6,7,8 then. the ensimmäinen tuloksena olevan vektorin tulo olisi kaikkien 1, 2, 3, 4, 5 ja 15 merkintöjen summa, eli 15. tuloksena olevan vektorin toisesta merkinnästä tulee olla kaikkien 2.3,4,5, 20. Lopulta tuloksena oleva vektori on 15,20,25,30. Kuinka voin tehdä sen. Konfunktion toiminta on aivan kadulla. Kolme vastausta, kolme eri menetelmää Tässä on nopea vertailuarvo eri panoskokoja, kiinteä ikkuna Leveys 5 käyttäen timeit vapaasti pilata reikiä siinä kommentit, jos luulet, että sitä on hienostunut. conv nousee nopein lähestymistapa se on noin kaksi kertaa niin nopeasti kuin kolikon lähestymistapa suodattimen ja noin neljä kertaa niin nopeasti kuin Luis Mendo s lähestymistapa cumsum. Here on toinen vertailu kiinteä panos koko 1e4 eri ikkunan leveydet Tässä Luis Mendo s cumsum lähestymistapa syntyy selkeä voittaja, koska sen monimutkaisuus on ensisijaisesti Jota hallitsee pituus syötteen ja ei ole herkkä leveydelle ikkunasta. Voit yhteenveto, sinun pitäisi. käytä conv lähestymistapa jos ikkuna on suhteellisen pieni. käytä cumsum lähestymistapa jos ikkuna on suhteellisen suuri. Koodi benchmarks. I Täytyy laskea liikkuva keskiarvo datasarjan yli, silmukan sisällä minun täytyy saada liikkuva keskiarvo N: n 9 päivän aikana. Taulukko I m laskentaan on 4 sarja 365 arvosta M, jotka ovat itse toisen datajoukon keskiarvot Haluan piirtää tietojani keskiarvot yhdellä tontilla liikkuvassa keskiarvossa. I googleni hieman liikkuvista keskiarvoista ja conv-komennosta ja löysin jotain, mitä yritin toteuttaa koodini. On pohjimmiltaan lasken keskiarvoani ja piirtäisin sen Väärällä liikkuvalla keskiarvolla otin wts-arvon pois mathworks-sivustosta, joten se on väärä lähde. Minun ongelmani on kuitenkin, että en ymmärrä, mitä tämä wts on. Voisiko joku selittää, jos sillä on jotain tekemistä arvojen painojen kanssa joka on virheellinen tässä tapauksessa Kaikki valu Ja jos teen tätä täysin väärin, voisinko auttaa minua. Minun vilpittömimmät kiitokset. sammas 23 syyskuu 19 klo 19 05.Käyttäminen conv on erinomainen tapa toteuttaa liikkuvan keskiarvon Käytät, wts on kuinka paljon punnittelet jokaista arvoa, kun olet arvannut, että kyseisen vektorin summa olisi aina yhtä suuri kuin yksi Jos haluat painottaa jokaista arvoa tasaisesti ja tehdä koon N liikkuvan suodattimen, niin haluaisit tehdä sen. Käyttämällä Valid-argumentti konvoluutiossa johtaa vähäisempään arvoon Ms: ssä kuin M: llä Käytä samaa, jos et pidä nollatäytön vaikutuksia Jos sinulla on signaalinkäsittelylaatikko, voit käyttää cconv: tä, jos haluat kokeilla ympyränmuotoista liukuvaa keskiarvoa Jotain Like. You lukea conv ja cconv dokumentaatiota lisätietoja, jos et ole jo olemassa. Voit käyttää suodatinta löytääksesi juoksevan keskiarvon käyttämättä silmukkaa Tämä esimerkki etsii 16-elementti-vektorin juoksevan keskiarvon ikkunan koon mukaan 5.2 sileä osa Curve Fitting Toolboxia joka on käytettävissä useimmissa tapauksissa. yy tasainen y tasoittaa tiedot sarakevektorissa y liikuttavan keskimääräisen suodattimen avulla Tulokset palautetaan sarakevektoriin yy Oletusvälin liikkuva keskiarvo on 5.Lataa movAv m Katso myös movAv2 - päivitetty versio, joka mahdollistaa painotuksen. Matlab sisältää toimintoja nimeltä movavg ja tsmovavg aikasarjan liukuva keskiarvo Financial Toolboxissa, movAv on suunniteltu kopioimaan niiden perustoiminnot. Koodi on tässä mukava esimerkki sisäisten silmukoiden indekseistä, mikä voi olla hämmentävää aluksi minä olen tarkoituksella säilyttänyt koodin lyhyen ja yksinkertaisen pitämään tämän prosessin clear. movAv suorittaa yksinkertaisen liukuvan keskiarvon, jota voidaan käyttää meluisten tietojen talteenottoon joissakin tilanteissa. Se toimii ottamalla y: n keskiarvo liukuvan ajan ikkunan , jonka koko määritellään n: n avulla Mitä suurempi n on, sitä suurempi n: n vaikutuksen tasausmäärä on suhteessa syöttövektorin y pituuteen ja tehokkaasti hyvin, lajin c on alipäästösuodatin - katso esimerkkejä ja näkökohdista. Koska kullakin n: n arvolla aikaansaama tasoitusmäärä on suhteessa sisääntulovektorin pituuteen, se kannattaa aina testata erilaisia arvoja, jotta voidaan nähdä, mikä sopiva. Muista myös, että n pisteitä menetetään kullakin keskiarvolla, jos n on 100, syöttövektorin ensimmäiset 99 pistettä eivät sisällä riittäviä tietoja 100 prosenttiyksikköä varten. Tätä voidaan välttää jonkin verran keskittämällä pinoamisia, esimerkiksi alla oleva koodi ja kuvaaja vertaa useita eri pituusikkunan keskiarvot Huomaa, kuinka sujuvaa 10 10pt - arvoa verrataan yhteen 20pt-keskiarvoon Molemmissa tapauksissa yhteensä 20 dataa menetetään. Luo xaxis x 1 0 01 5 Luo melukohinaa 4 kohinaa, 1 melutasoa, kohinaa 1 kohinaa, kohinaa, kohinaa 1 kohinaa, 1 kohinaa kohinaa kohinaa 1 x pituus x x keskiarvoista y2 movAv y, 10 10 pt y3 movAv y2, 10 10 10 pt y4 movAv y, 20 20 pt y5 movAv y, 40 40 pt y6 movAv y, 100 100 pt Plot kuva tontti x, y, y2, y3, y4, y5, y6 legenda data, 10pt liikkuva keskiarvo, 10 10pt, 20pt, 40pt, 100pt xlabel x ylabel y title Liikkuvien keskiarvojen vertailu. movAv m-koodin läpivientifunktion lähtö movAv y, n Ensimmäinen rivi määrittää toiminnon nimen, tulot ja lähdöt Tulo x pitäisi olla datan vektori keskimäärän suorittamiseksi, n on pistemäärä, joka suorittaa keskimääräisen tuloksen, sisältää funktion palauttavan keskiarvon. Preallocate-ulostulon tuotto NaN 1, numel y Etsi keskipiste n keskipisteen kierroksella n 2 Toiminnon päätehtävä tehdään silmukan silmukalle, mutta ennen kuin aloitetaan kaksi asiaa, valmistellaan Fir että tuotos on ennalta kohdistettu NaN: nä, tämä palvelee kahta tarkoitusta varten Ensinnäkin esivalinta on yleisesti hyvää käytäntöä, koska se vähentää Matlabin tekemien muistijongleerausten tekemistä. Toiseksi, on helppoa sijoittaa keskimääräinen data tulosteen koon mukaan tulovektori Tämä tarkoittaa, että samaa xaxia voidaan käyttää myöhemmin molempia varten, mikä on kätevää piirtää, vaihtoehtoisesti NaN: t voidaan poistaa myöhemmin yhdellä koodin ulostulon rivillä. Muuttujaa midPointia käytetään datan kohdistamiseksi lähtövektoriin Jos n 10, 10 pistettä menetetään, koska tulovektorin ensimmäisten 9 pisteen kohdalla ei ole tarpeeksi tietoa kymmenen pisteen keskiarvon ottamiseksi. Koska lähtö on lyhyempi kuin syöttö, se on kohdistettava oikein. Midpoint käytetään siten, että yhtä suuri määrä tietoja menetetään alussa ja lopussa, ja tulo pidetään kohdistettuna lähtöön, jonka NaN-puskureita luodaan, kun esivalinta tuottaa. 1-pituiseksi y - n Etsi indeksialue keskimäärin laskettuna. Laske keskiarvo a keskipisteen keskiarvo yab-pää Itsessään itse silmukalle syötetään keskiarvo kullekin tulolähteen kullekin segmentille Silmukka ajetaan sille, joka on määritelty 1: ksi tulon y pituuden mukaan, miinus menetettävän datan mukaan n Jos tulo on 100 pisteen pituinen ja n on 10, silmukka ajaa 1: stä 90: een. Tämä tarkoittaa, että segmentin ensimmäinen indeksi keskiarvoidaan. Toinen indeksi b on yksinkertaisesti n-1. Joten ensimmäisellä iteroinnilla, a 1 n 10 niin b 11-1 10 Ensimmäinen keskiarvo otetaan yab: n tai x 1: n mukaan 10 Tämän segmentin keskiarvo, joka on yksittäinen arvo, tallennetaan lähtöön indeksissä a midpoint tai 1 5 6. Toisessa iteraatiossa , a 2 b 2 10-1 11 niin, että keskiarvo otetaan x 2 11: n kohdalta ja tallennetaan lähtöön 7 Silmukan viimeinen iterointi tulon 100 pituudelle, 91 b 90 10-1 100, joten keskiarvo otetaan yli x 91 100 ja tallennetaan lähtöön 95 Tämä jättää tuotoksen yhteensä n 10 NaN-arvoa indeksillä 1 5 ja 96 100.Esimerkkejä ja huomioita Liikkuvat keskiarvot ovat hyödyllisiä joissakin tilanteissa, mutta ne ei ole aina paras valinta Tässä on kaksi esimerkkiä, joissa ne eivät välttämättä ole optimaalisia. Mikrofoni kalibrointi Tämä datayhdistelmä edustaa kunkin kaiuttimen tuottaman taajuuden tasoa ja tallennetaan mikrofonilla, jolla on tunnettu lineaarinen vaste Kaiuttimen lähtö vaihtelee taajuus, mutta voimme korjata tämän vaihtelun kalibrointidatalla - lähtö voidaan säätää tasolle kalibroinnin vaihtelujen huomioon ottamiseksi. Huomaa, että raakatiedot ovat meluisat - tämä tarkoittaa, että pieni taajuuden muutos näyttää vaatineen suuri, epätäsmällinen muutos tason huomioon ottaminen Onko tämä realistinen vai onko tämä tallennusympäristön tuote? Tässä tapauksessa on järkevää soveltaa liikkuvan keskiarvon, joka tasoittaa tason taajuuskäyrän, jotta saadaan kalibrointikäyrä, joka on hieman epätäsmällisempi Mutta miksi tämä esimerkki ei ole optimaalinen. Edellinen data olisi parempi - useat kalibroinnit keskimäärin yhdessä tuhoaisivat melun järjestelmässä niin kauan kuin se toimi dom ja antaa käyrän vähemmän hienovaraisia yksityiskohtia menettänyt Liikkuva keskiarvo voi vain lähentää tätä, ja voi poistaa joitakin korkeampia taajuus dips ja huiput kaarteesta, että todella olemassa. Sina aallot Liikkuva keskiarvo siniaallot korostaa kaksi pistettä. kysymys kohtuullisen määrän pistettä suorittaa keskimääräinen over. It s yksinkertainen, mutta on olemassa tehokkaampia menetelmiä signaalin analyysiin keskiarvon värähteleviä signaaleja aika-alalla. Tässä kaaviossa alkuperäinen siniaalto on piirretty sinisellä Noise on lisätty ja piirretty oranssina käyränä Liikkuva keskiarvo suoritetaan eri pisteissä, jotta voidaan nähdä, voidaanko alkuperäinen aalto saada takaisin 5 ja 10 pistettä tuottavat kohtuullisia tuloksia, mutta eivät poista melua kokonaan, kun enemmän pisteitä alkaa menetetään amplitudin yksityiskohtia, kun keskiarvo ulottuu eri vaiheiden välillä, muistaa aalto värähtää noin nollaan ja keskiarvo -1 1. Vaihtoehtoinen lähestymistapa olisi rakentaa alipäästösuodatin, jota voidaan käyttää Jota sovelletaan taajuusalueella olevaan signaaliin, en aio mennä yksityiskohtiin, koska se ylittää tämän artikkelin soveltamisalan, mutta koska melua on huomattavasti korkeampi kuin aaltojen perustaajuus, tässä tapauksessa olisi melko helppoa rakentaa Alipäästösuodatin, joka poistaa korkeataajuisen melun.
No comments:
Post a Comment