Monday 20 November 2017

Liukuva Keskiarvo Keskiarvo Matlab


MATLABin avulla, miten löydän matriisin tietyn sarakkeen kolmen vuorokauden liukuvan keskiarvon ja liitän liukuva keskiarvo tähän matriisiin, yritän laskea kolmen päivän liukuva keskiarvo alhaalta matriisin päähän. Olen antanut koodini: Kun otetaan huomioon seuraava matriisi a ja mask: Olen yrittänyt toteuttaa conv-komentoa, mutta saan virheen. Tässä on conv-komento, jota olen yrittänyt käyttää matriisin toisessa sarakkeessa a: Tulos, jonka haluan, annetaan seuraavassa matriisissa: Jos sinulla on ehdotuksia, olisin kiitollinen siitä. Kiitos Matriisin a sarakkeesta 2 laskennan 3 päivän liukuva keskiarvo seuraavalla tavalla ja tuloksena matriisin a sarakkeessa 4 (nimetin uudelleen matriisin a 39desiredOutput39 vain kuvaksi). 3 päivän keskiarvo 17, 14 ja 11 on 14 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. Neljän sarakkeen alareunassa ei ole arvoa, koska kolmen päivän liukuva keskiarvo lasketaan alareunasta. 39valid39 tuotos ei näy, ennen kuin ainakin 17, 14 ja 11. Toivottavasti tämä on järkevää ndash Aaron 12 kesäkuu 13 at 1:28 Yleensä olisi apua, jos näytät virheen. Tässä tapauksessa teet kahta asiaa väärin: Ensin konvoluutiot on jaettava kolmella (tai liikkuvan keskiarvon pituudella). Toinen huomaa c: n koko. Et voi vain sovi a: aan. Tyypillinen tapa saada liikkuva keskiarvo olisi käyttää samaa, mutta se ei näytä mitä haluat. Sen sijaan sinun on pakko käyttää muutamaa riviä: Lataa movAv. m (katso myös movAv2 - päivitetty versio, joka mahdollistaa painotuksen) Kuvaus Matlab sisältää Financial Toolbox - ohjelmaan nimettyjä movavg - ja tsmovavg-toimintoja (time-series moving average) movAv on suunniteltu kopioida niiden perustoiminnot. Koodi tässä on mukava esimerkki sisäisten silmukoiden hakemistojen 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ä. Suurempi n on, sitä suurempi n: n vaikutuksen tasausmäärä on suhteessa syöttövektorin y pituuteen. ja tehokkaasti (hyvin, lajitella) luodaan alipäästösuodatin - 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 lähtö 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) kiellon Laske keskimääräinen tulostus (amidPoint) keskiarvo (y (a: b)) loppuun Jos silmukalle itseään, keskiarvo otetaan jokaisen peräkkäisen syötteen segmentin osalta. (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 indeksissä keskellä Pointia. 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 vaihteluiden huomioon ottamiseksi. Huomaa, että raakatiedot ovat meluisat - tämä tarkoittaa sitä, 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 suurempi määrä pisteitä alkaa menettää amplitudiosoitetta, kun keskiarvo ulottuu eri vaiheissa (muista aalto oskillaatiot noin nolla ja keskiarvo (-1 l) 0) . Vaihtoehtoinen lähestymistapa olisi rakentaa alipäästösuodatin, jota voidaan soveltaa 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 korkea taajuus noise. I tarvitse laskea liikkuvan keskiarvon tietosarjassa, sisällä silmukka. 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 liikkuvassa keskiarvossa yhdelle tontille. 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äärä) 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 tulisi aina olla 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. Voit käyttää suodatinta löytääksesi juoksevan keskiarvon käyttämättä silmukkaa. Tämä esimerkki löytää 16-elementti-vektorin juoksevan keskiarvon käyttäen ikkunan kokoa 5. 2) sileä osa Curve Fitting Toolboxia (joka on useimmissa tapauksissa käytettävissä) yy sileä (y) sileää datan sarakevektoriin y käyttämällä liikkuvaa keskimääräistä suodatinta. Tulokset palautetaan sarake vektorissa yy. Oletusvälin liikkuvaa keskiarvoa varten on 5.Created keskiviikkona 08.10.2008 20:04 Viimeisin päivitys torstaina, 14. maaliskuuta 2013 01:29 Kirjoittanut Batuhan Osmanoglu Osumat: 41491 Liukuva keskiarvo matlabissa Usein olen joutunut keskimäärin tarpeeseen tiedot minun täytyy vähentää melua hieman. Kirjoitin pari toimintoa, jotta voisin tehdä täsmälleen mitä haluan, mutta suodattimen toimintoihin rakennettu matalakit toimivat melko hyvin. Täällä kirjoitetaan 1D: n ja 2D: n keskimääräinen data. 1D-suodatin voidaan toteuttaa käyttämällä suodatustoimintoa. Suodatintoiminto vaatii vähintään kolme syöttöparametria: suodattimen (b) laskentakerroin, suodattimen (a) nimittäjäkerroin ja tietenkin (X). Juoksevan keskimääräisen suodattimen voi määritellä yksinkertaisesti: 2D-datalle voimme käyttää Matlabs-suodatinta2 - toimintoa. Lisätietoja suodattimen toiminnasta voit kirjoittaa: Tässä on nopea ja likaista 16: nteen liukuvan keskimääräisen suodattimen toteutusta. Ensin meidän on määriteltävä suodatin. Koska kaikki haluamme on kaikkien naapureiden tasainen panos, voimme vain käyttää niitä. Jaamme kaiken 256: llä (1616), koska emme halua muuttaa signaalin yleistä tasoa (amplitudi). Suodattimen käyttämiseksi voimme yksinkertaisesti sanoa seuraavaksi Alla on tulokset SAR-interferogrammin vaiheelle. Tässä tapauksessa Alue on Y-akselilla ja Asemuutti on kartoitettu X-akselilla. Suodatin oli 4 pikseliä leveä ja 16 pikseliä leveä Azimutissa.

No comments:

Post a Comment