Tuesday 14 November 2017

5 Point Liikkuva Keskiarvo Matlab


29. syyskuuta 2013 Keskimääräinen liikkuva konvoluutiolla Mikä on liukuva keskiarvo ja mikä on hyvä Kuinka liukuva keskiarvo tehdään konvoluutiolla Liikkuva keskiarvo on yksinkertainen operaatio, jota käytetään tavallisesti häiritsemään signaalin kohinaa: asetamme kunkin pisteen arvon arvoja sen lähialueilla. Kaavalla: Tässä x on tulo ja y on lähtösignaali, kun ikkunan koko on w, jonka pitäisi olla outoa. Edellä oleva kaava kuvaa symmetristä toimintaa: näytteet otetaan todellisesta pisteestä molemmilta puolilta. Alla on todellinen esimerkki. Piste, jolle ikkuna asetetaan, on todella punainen. Arvojen ulkopuolella x on tarkoitus olla nollia: katsomalla tätä vuorovaikutteista esittelyä voit katsella ja katsoa liikkuvan keskiarvon vaikutuksia. Kuinka tehdä se konvoluutiolla Kuten olet ehkä tunnustanut, yksinkertaisen liukuvan keskiarvon laskeminen on samanlainen kuin konvoluutio: molemmissa tapauksissa ikkunan liukuu signaalin suuntaan ja ikkunassa olevat elementit on tiivistetty. Joten, yritä tehdä sama asia käyttämällä convolutionia. Käytä seuraavia parametreja: Haluttu lähtö on: Ensimmäisenä lähestymistapana kokeile, mitä saamme kaventamalla x-signaalia seuraavalla k-ytimellä: Lähtö on täsmälleen kolme kertaa suurempi kuin odotettu. Voidaan myös nähdä, että lähtöarvot ovat yhteenveto kolmen elementin ikkunasta. Se johtuu siitä, että konvoluution aikana ikkuna liukuu pitkin, kaikki sen elementit kerrotaan yhdellä ja tiivistetään sitten: yk 1 cdot x 1 cdot x 1 cdot x Saadaksesi y: n halutut arvot. tuotos on jaettava 3: Kaavalla, joka sisältää jakautumisen: Mutta eikö olisi optimaalista tehdä jakautuminen konvoluutiossa? Tässä tulee ajatus järjestelemällä yhtälö: Joten käytämme seuraavaa k-ytimessä: Tällä tavoin saat halutun tuotoksen: Yleisesti: jos haluamme tehdä liukuvan keskiarvon konvoluutiolla, jonka ikkunan koko on w. käytämme seuraavaa k ytimenä: Yksinkertainen liikevoiman tekevä toiminto on: Esimerkkikäyttö on: Minun täytyy laskea liikkuva keskiarvo tietosarjassa, silmukan sisällä. Minun täytyy saada liikkuva keskiarvo N9 päivää kohti. Määritelmä Im-laskenta on 4 sarja 365-arvoa (M), jotka itse ovat toisen datasarjan keskiarvot. Haluan piirtää tietoni keskimääräiset arvot liikkuvan keskiarvon yhteen juonteeseen. Olen googled hieman noin liikkuvia keskiarvot ja conv komento ja löytänyt jotain, jonka yritin toteuttaa koodini: Joten pohjimmiltaan minä laskea keskiarvo ja piirtää sen (väärin) liukuva keskiarvo. Otin wts-arvon pois mathworks-sivustosta, joten se on virheellinen. (lähde: mathworks. nlhelpeconmoving-average-trend-estimation. html) Minun ongelmani on kuitenkin se, etten ymmärrä mitä tämä wts on. Voisiko joku selittää, jos sillä on jotain tekemistä arvojen painojen kanssa: se on tässä tapauksessa virheellinen. Kaikki arvot on painotettu samalla tavalla. Ja jos teen tämän täysin väärin, voisinko saada apua tähän. Kiitokseni. kysyi syyskuu 23 14 klo 19:05 Konf on erinomainen tapa toteuttaa liukuva keskiarvo. Käytetyssä koodissa wts on kuinka paljon punnit jokainen arvo (kuten olet arvannut). Kyseisen vektorin summan tulee olla aina yhtä suuri kuin yksi. Jos haluat painottaa jokaista arvoa tasaisesti ja tehdä koon N liikkuvan suodattimen, niin haluat tehdä. Käyttämällä kelvollista argumenttia konvoluutiossa seurauksena on vähemmän arvoja M: n kuin sinulla on M. Käytä samaa, jos et pidä vaikutuksia Nolla täyttöä. Jos sinulla on signaalinkäsittelylaatikko, voit käyttää cconv-koodia, jos haluat kokeilla pyöreää liukuvaa keskiarvoa. Jotain kuin sinun pitäisi lukea conv - ja cconv-dokumentaatiota lisätietoja, jos et ole jo. Siirrä keskisuodatin (MA-suodatin) Lataa. Liikkuva keskimääräinen suodatin on yksinkertainen alipäästösuodatin (Finite Impulse Response) - suodatin, jota käytetään yleisesti näytteenoton datasignaalin tasoittamiseen. Se ottaa näytteitä M kerrallaan ja ottaa näiden M-näytteiden keskiarvon ja tuottaa yhden lähtöpisteen. Se on hyvin yksinkertainen LPF (Low Pass Filter) - rakenne, joka on kätevä, kun tiedemiehet ja insinöörit suodattavat ei-toivottua meluisaa komponenttia suunnitelluista tiedoista. Suodattimen pituuden kasvaessa (parametri M) ulostulon sujuvuus kasvaa, kun taas datan terävät siirtymät ovat yhä tylsiä. Tämä merkitsee sitä, että tällä suodattimella on erinomainen aika-alueen vastaus, mutta huono taajuusvaste. MA-suodatin suorittaa kolme tärkeää tehtävää: 1) Se ottaa M-syöttöpisteet, laskee näiden M-pisteiden keskiarvon ja tuottaa yhden lähtöpisteen 2) Käytettyjen laskentakilaskelmien vuoksi. suodatin tuo määrätyn määrän viivettä 3) Suodatin toimii alipäästösuodattimena (huono taajuusalueen vastaus ja hyvä aika-alueen vastaus). Matlab-koodi: Matlab-koodin jäljitteleminen M-pisteen Moving Average - suodattimen aikavälien vasteena ja piirtää myös taajuusvasteen eri suodattimien pituuksille. Aika Domain Response: Ensimmäisellä piirroksella meillä on syöttö, joka menee liikkuvaan keskisuodattimeen. Tulo on meluisa ja tavoitteemme on vähentää melua. Seuraava luku on 3-pisteen Moving Average - suodattimen tuotosvaste. Kuviosta voidaan päätellä, että 3-pisteinen Moving Average - suodatin ei ole tehnyt paljon suodattamalla kohinaa. Lisäämme suodattimen hanat 51 pisteeseen ja voimme nähdä, että ulostulon kohina on vähentynyt paljon, mikä kuvataan seuraavassa kuvassa. Lisäämme hanat edelleen 101: een ja 501: een, ja voimme havaita, että vaikka melua on melkein nolla, siirtymät on irrotettu voimakkaasti (tarkkaile signaalin molemmin puolin kaltevuutta ja verrataan niitä ihanteelliseen tiiliseinän siirtymään Meidän panoksemme). Taajuusvaste: Taajuusvasteesta voidaan todeta, että rullaus on hyvin hidasta ja pysähtymän nauhan vaimeneminen ei ole hyvä. Tämän pysäytyskaistan vaimennuksen vuoksi selkeästi liikkuvan keskiarvosuodatin ei voi erottaa yhtä taajuuskaistaa toiselta. Kuten tiedämme, hyvä aikataulun suorituskyky johtaa taajuusalueen heikkoon suorituskykyyn ja päinvastoin. Lyhyesti sanottuna liukuva keskiarvo on poikkeuksellisen hyvä pehmenyssuodatin (aika-alueen toiminta), mutta poikkeuksellisen huono alipäästösuodin (toiminta taajuustasossa). Ulkoiset linkit: Suositeltavat kirjat: Primary SidebarDownload movAv. m (katso myös movAv2 - päivitetty versio, joka mahdollistaa painotuksen) Kuvaus Matlab sisältää Financial Toolbox - ohjelmaan kutsutut movavg - ja tsmovavg-toiminnot (aikasarjan liukuva keskiarvo), movAv on suunniteltu kopioimaan näiden perustoiminnot. Koodi tässä on mukava esimerkki sisäisten silmukoiden indeksien hallinnasta, mikä voi olla hämmentävää aluksi. Olen tahallaan pitämässä koodia lyhyt ja yksinkertainen pitämään tämä prosessi selkeänä. MovAv suorittaa yksinkertaisen liukuvan keskiarvon, jota voidaan käyttää meluisten tietojen talteenottoon joissakin tilanteissa. Se toimii ottamalla tulon (y) keskiarvo liukuvan ajan ikkunan yli, jonka koko määritellään n: llä. Mitä suurempi n on, sitä suurempi n: n vaikutus tasoitetaan suhteessa syöttövektorin y pituuteen. Ja tehokkaasti (hyvin, eräänlainen) luo alipäästösuodattimen - katso esimerkkejä ja huomioita - osio. Koska kullakin n: n arvolla aikaansaama tasoitusmäärä on suhteessa syöttövektorin pituuteen, sen on aina syytä testata erilaisia ​​arvoja, jotta voidaan nähdä, mikä on sopivaa. Muista myös, että n-pisteitä katoaa kustakin keskiarvosta, jos n on 100, tulovektorin ensimmäiset 99 pistettä eivät sisällä tarpeeksi tietoa 100 prosenttiyksikköä kohti. Tätä voidaan välttää jonkin verran keskittämällä pinoamisia, esimerkiksi alla oleva koodi ja kuvaaja vertaa useita eri pituusikkunan keskiarvoja. Huomaa, miten sujuvaa 1010pt-tasoa verrataan yhteen 20pt-keskiarvoon. Kummassakin tapauksessa 20 tietopistettä menetetään kokonaisuudessaan. Luo xaxis x1: 0,01: 5 Luo melukohinaa 4 kohinaa (randn (1, ceil (numel (x) noiseReps)), noiseReps, 1) kohinamuoto (kohina, 1, pituus (kohina) noiseReps) (y, 10) 10 pt y3 movAv (y2, 10) 1010 pt y4 movAv (y, 20) 20 pt y5 movAv (y, 40) 40 pt y6, y4, y5, y6) legenda (raakatiedot, 10pt liukuva keskiarvo, 1010pt, 20pt, 40pt, 100pt) xlabel (x) ylabel ( y) otsikko (liikkuvien keskiarvojen vertailu) movAv. m-koodin läpivientifunktio lähtö movAv (y, n) Ensimmäinen rivi määrittelee funktioiden nimen, tulot ja lähdöt. Tulo x pitäisi olla datan vektori, jolla keskimääräinen arvo suoritetaan, n on pistemäärä, joka suorittaa keskimääräisen tuloksen, sisältää toiminnon palauttaman keskiarvotiedot. Ennakoida lähdön outputNaN (1, numel (y)) Etsi keskipisteen n keskipisteen kierros (n2) Toiminnan päätoiminto tehdään silmukan silmukalle, mutta ennen kuin aloitetaan kaksi asiaa, valmistellaan. Ensinnäkin tuotos on ennalta varattu NaN: nä, tämä palvelee kahta tarkoitusta. Ensinnäkin esivalinta on yleisesti hyvää käytäntöä, koska se vähentää Matlabin tekemää muistijongleerausta, toiseksi se tekee erittäin helppoa sijoittaa keskimääräinen data sisääntuloon, joka on kooltaan sama kuin syöttövektori. Tämä tarkoittaa, että samaa xaxia voidaan käyttää myöhemmin molemmille, mikä on kätevää piirtää, vaihtoehtoisesti NaN: t voidaan poistaa myöhemmin yhdessä koodirivissä (lähtöulostulo (Muuttujaa midPointia käytetään datan kohdentamiseen lähtövektoriin. n 10, 10 pistettä menetetään, koska tulovektorin ensimmäisten 9 pisteen kohdalla ei ole tarpeeksi tietoa, jotta kymmenen pisteen keskiarvo olisi kelvollinen, koska tuloste on lyhyempi kuin syöttö, se on kohdistettava oikein. Käytä niin, että yhtä suuri määrä tietoja menetetään alussa ja lopussa ja tulo säilyy linjassa lähtöön, jonka NaN-puskureita luodaan, kun tuotos on esiasennettu. 1: pituus (y) - n Etsi indeksin alue keskimäärin ylittää (a: b) kieltää Laske keskiarvo (amidPoint) keskiarvo (y (a: b)) loppu Jos itse silmukalle, keskiarvo otetaan jokaisen peräkkäisen segmentin sisääntuloon. (y), vähennettynä menetetyn datan (n) avulla, jos tulo on 100 pistettä lo ng ja n on 10, silmukka ajaa 1: stä 90: een. Tämä tarkoittaa, että segmentin ensimmäinen indeksi on keskiarvo. Toinen indeksi (b) on yksinkertaisesti an-1. Joten ensimmäisellä iteraatiolla a1. n10. joten b 11-1 10. Ensimmäinen keskiarvo on y (a: b). tai x (1:10). Tämän segmentin keskiarvo, joka on yksittäinen arvo, tallennetaan tuotoksessa indeksinä keskellä Point. Tai 156. Toisessa iteraatiossa a2. b 210-1 11. Joten keskiarvo otetaan x (2:11) ja tallennetaan lähtöön (7). Silmukan viimeinen iterointi, jonka pituus on 100, a91. B 9010-1 100 joten keskiarvo otetaan x (91: 100) ja tallennetaan lähtöön (95). Tällöin tuotos on yhteensä n (10) NaN-arvoa indeksillä (1: 5) ja (96: 100). Esimerkkejä ja huomioita Keskimääräiset liikkeet ovat hyödyllisiä joissakin tilanteissa, mutta ne eivät aina ole paras valinta. Tässä on kaksi esimerkkiä, joissa he eivät ole välttämättä optimaalisia. Mikrofonin kalibrointi Tämä datayhdistelmä edustaa kunkin kaiuttimen tuottaman taajuuden tasoa ja tallennetaan mikrofonilla, jolla on tunnettu lineaarinen vaste. Kaiuttimen lähtö vaihtelee taajuuden mukaan, mutta voimme korjata tämän vaihtelun kalibrointitiedoilla - 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 suuren, epätäsmällisen muutoksen tason huomioon ottamiseksi. Onko tämä realistinen? Vai onko tämä tallennusympäristön tuote kohtuullinen tässä tapauksessa soveltamaan liikkuvaa keskiarvoa, joka tasoittaa tasosäteen käyrän kalibrointikäyrän aikaansaamiseksi, joka on hieman epätäsmällisempi. Mutta miksi tämä esimerkki ei ole optimaalinen? Lisää tietoja olisi parempi - useat kalibroinnit keskimäärin yhdessä tuhoaisivat järjestelmän melun (niin kauan kuin sen satunnainen) ja tarjoavat käyrän, jossa vähemmän hienovaraisia ​​yksityiskohtia menetetään. Liikkuva keskiarvo voi vain lähentää tätä, ja se voi poistaa korkeammat taajuusmuodot ja huiput käyrältä, joka todella on olemassa. Siniaallot Sinin aallon liikkuvan keskiarvon avulla korostuu kaksi pistettä: Yleinen kysymys kohtuullisen määrän pisteiden valitsemisesta keskiarvon suorittamiseksi. Sen yksinkertainen, mutta signaalianalyysissä on tehokkaampia menetelmiä kuin keskiarvoista värähteleviä signaaleja aika-alueella. Tässä kaaviossa alkuperäinen siniaalto on piirretty siniseen. Melu lisätään ja piirretään oranssina käyränä. Liikkuva keskiarvo suoritetaan eri pisteissä, jotta voidaan nähdä, voidaanko alkuperäinen aalto ottaa talteen. 5 ja 10 pistettä antavat kohtuullisia tuloksia, mutta älä poista melua kokonaan, kun suuremmat määrä pisteitä alkavat menettää amplitudin yksityiskohtia, kun keskiarvo ulottuu eri vaiheille (muista aalto oskillaatiot noin nolla ja keskiarvo (-1 l) 0) . Vaihtoehtoinen lähestymistapa olisi rakentaa alipäästösuodatin, jota voidaan käyttää taajuusalueen signaaliin. En aio mennä yksityiskohtiin, koska se menee tämän artikkelin soveltamisalan ulkopuolelle, mutta melun ollessa huomattavasti korkeampi kuin aaltojen perustaajuus, tässä tapauksessa olisi melko helppoa rakentaa alipäästösuodatin kuin poistaa korkeataajuus melu.

No comments:

Post a Comment