Monday 27 November 2017

Liikkuva Keskiarvo Vektori Matlab


29 syyskuu, 2013. Keskimääräinen keskiarvo convolution. What liikkuu keskimäärin ja mikä on hyvä for. What on moving averaging tehdään käyttämällä convolution. Moving keskimäärin on yksinkertainen operaatio käytetään yleensä tukahduttaa signaalin melu asettaa kunkin arvon viittaavat sen lähiympäristön arvojen keskiarvoon 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 symmetrisen operaation näytteiden ottamista Todellisen pisteen molemmilta puolilta. Se on todellinen elämä esimerkki. Piste, jolle ikkuna asetetaan, on punainen. Arvojen ulkopuolella x on tarkoitus olla nollia. Jos haluat pelata ja nähdä liikkuvan keskiarvon vaikutukset, katsokaa tätä vuorovaikutteinen esittely. Kuinka tehdä se konvoluutiolla. Kuten ehkä olette tunnustaneet, yksinkertaisen liukuvan keskiarvon laskeminen on samanlainen kuin konvoluution molemmissa tapauksissa ikkunan liukuu signaalin suuntaan ja ikkunan elementit tiivistetään. Joten kokeile sitä tehdä sama asia käyttäen convolution Käytä seuraavia parametrejä. Haluttu tuotos on. Kuten ensimmäinen lähestymistapa, yritämme kokeilla mitä saamme kaventamalla x-signaalin seuraavan k kernel. The tuotos on täsmälleen kolme kertaa suurempi kuin odotettu Se voi olla myös että tuotosarvot ovat kolmen elementin yhteenveto ikkunassa. Sillä, kun konvoluution aikana ikkuna liukuu pitkin, kaikki sen elementit kerrotaan yhdellä ja tiivistetään sitten. yk 1 cdot x 1 cdot x 1 cdot x. Jos halutut y: n arvot tuotetaan jaetaan 3.By kaava sisältää divisioonan. Mutta ei ole optimaalista tehdä jakoa konvoluutiossa Tässä tulee ajatus Järjestämme siis seuraavan k-ytimen. Näin saadaan haluttu tuotos. Yleensä, jos haluamme tehdä liikkuvaa keskiarvoa konvoluutiolla, jonka ikkuna on w, käytämme seuraavaa k-kerneliä. Yksinkertainen toiminto liikkuva keskiarvo on. Esimerkiksi käyttö on. Download movAv m katso myös movAv2 - päivitetty versio, joka mahdollistaa painotuksen. Dathility Matlab sisältää toimintoja nimeltään movavg ja tsmovavg aikasarjan liukuva keskiarvo Financial Toolbox, movAv on suunniteltu kopioimaan perus Näiden koodien toimivuus on tässä mukava esimerkki sisäisten silmukoiden indeksien hallinnasta, mikä voi olla hämmentävä aluksi. Minulla on tarkoituksellisesti säilytetty koodi lyhyt ja yksinkertainen pitääksesi tämän prosessin clear. movAv suorittaa yksinkertaisen liukuvan keskiarvon, joka voi käytetään meluisten tietojen talteenottoon joissakin tilanteissa. Se toimii ottamalla y: n keskiarvo liukuvan ikkunan yli, jonka koko määritellään n: n avulla. Mitä suurempi n on, sitä suurempi on n: n vaikutuksen tasoittaminen suhteessa sisääntulovektorin y pituuteen ja hyvinkin hyvin, eräänlainen luo alipäästösuodattimen - katso esimerkkejä ja huomioiden osiota. Koska kullakin n: n arvolla aikaansaama tasoitusmäärä on suhteessa syöttövektorin pituuteen, se s aina kannattaa testata erilaisia ​​arvoja nähdäksesi, mikä on tarkoituksenmukaista Muista myös, että n pistettä katoaa jokaisesta keskiarvosta, jos n on 100, tulovektorin ensimmäiset 99 pistettä eivät sisällä riittäviä tietoja 100 prosenttiyksikköä varten. Tämä voidaan välttää jonkin verran pinotaessa keskiarvot esimerkiksi alla olevasta koodista ja kaaviosta vertaa useita eri pituusikkunan keskiarvoja Huomaa, miten sujuvaa 10 10pt - arvoa verrataan yhteen 20pt-keskiarvoon Molemmissa tapauksissa yhteensä 20 tietokokonaa 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ä, se palvelee kahta tarkoitusta varten Ensinnäkin esivalinta on yleisesti hyvää käytäntöä, koska se vähentää Matlabin tekemien muistijongleerausten tekemistä, toiseksi se tekee erittäin helposti keskitetyn datan sijoitettavaksi lähdöksi, jonka koko on sama kuin 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, joten 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, jotka todella ovat olemassa. Sine 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 0. 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 kohina on huomattavasti korkeampi kuin aaltojen perustaajuus, tässä tapauksessa olisi melko helppoa rakentaa alipäästösuodatin kuin poistaa korkeataajuisen melun. MATLABin käytön avulla, miten löydän matriisin tietyn sarakkeen kolmen vuorokauden liukuvan keskiarvon ja liittää liikkuvan keskiarvon tähän matriisiin, yritän laskea kolmen päivän liukuva keskiarvo alhaalta matriisin päähän olen antanut koodini. Ossa seuraava matriisi a ja mask. I olen yrittänyt toteuttaa conv-komento mutta saan virheen Tässä on conv-komento, jota olen yrittänyt käyttää toisen sarakkeen matriisi a. Toimitus haluan on annettu seuraavassa matriisissa. Jos sinulla on ehdotuksia, olisin kiitollinen siitä Kiitos. Matriisin a sarakkeessa 2 laskennan kolmen vuorokauden liukuvan keskiarvon seuraavasti ja saatan tuloksen sarakkeessa 4 matriisi a rena Med matriisi a halutessasi Ulos kuva vain 3 päivän keskiarvo 17, 14, 11 on 14 3 päivän keskiarvo 14, 11, 8 on 11 3 päivän keskiarvo 11, 8, 5 on 8 ja 3 päivän keskiarvo 8, 5, 2 on 5 Ei ole arvoa neljännen sarakkeen alareunassa kahdella rivillä, koska kolmen päivän liukuva keskiarvo lasketaan alareunasta. Kelvollinen tulostus näkyy näytössä, kunnes vähintään 17, 14 ja 11 Toivottavasti tämä on järkevää Aaron 12. kesäkuuta 13 klo 1. 28. Yleisesti olisi apua, jos näytät virheen Tässä tapauksessa teet kaksi asiaa väärin. Ensin konvoluutiot on jaettava kolmeen tai pituuteen liikkumaton keskiarvo. Esimerkiksi, huomaa koko c Et voi vain sovi c Tyypillinen tapa saada liikkuvan keskiarvon olisi käyttää samaa. mutta se doesnt t näyttää, mitä haluat. Vaikka olet pakko käyttää pari riveistä.

No comments:

Post a Comment