Liikkuva Keskiarvo Konvoluutio


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 sisältämät elementit kerrotaan yhdellä ja tiivistetään sitten: yk 1 cdot x 1 cdot x 1 cdot x Halutut y: n 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 ydintä: Näin me saat halutun tuotoksen: Yleisesti: jos haluamme tehdä liukuvan keskiarvon konvoluutiolla, jonka ikkunan koko on w. käytämme seuraavaa k ytimenä: Yksinkertainen liikkuva keskiarvo on: Esimerkkikäyttö on: Siirrettävä keskiarvo suodattimena Liikkuvaa keskiarvoa käytetään usein tietojen tasoittamiseen melun läsnä ollessa. Yksinkertaista liikkuvaa keskiarvoa ei tunnusteta aina Finite Impulse Response (FIR) - suodattimeksi, vaikka se on itse asiassa yksi yleisimmistä suodattimista signaalinkäsittelyssä. Suodattimen käsitteleminen mahdollistaa sen vertailun esim. Ikkuna-sync - suodattimilla (ks. Artikkeleita alipäästösuodattimista ja kaistanpäästö - ja kaistanrajoitussuodattimista esimerkeistä). Suuri ero näiden suodattimien kanssa on se, että liukuva keskiarvo soveltuu signaaleille, joiden hyödylliset tiedot sisältyvät aika-alueeseen. joista tasoitusmittaukset keskimäärin on erinomainen esimerkki. Synteettiset suodattimet puolestaan ​​ovat voimakkaita esiintyjiä taajuusalueella. äänen käsittelyn tasaus tyypillisenä esimerkkinä. Molempien suodatintyyppien vertailu on tarkempaa suodattimien aika-aluetta vs. taajuusalueen suorituskykyä. Jos sinulla on tietoja, joilla sekä aika että taajuusalue ovat tärkeitä, kannattaa tutustua liikkuvien keskiarvojen muunnelmia. joka esittää useita painotettuja versioita liikkuvasta keskiarvosta, jotka ovat parempia siinä. Pituuden (N) liikkuva keskiarvo voidaan määritellä kirjoitettuna, koska se tyypillisesti toteutetaan, ja nykyinen tulostusnäytteeksi edellisten (N) näytteiden keskiarvo. Suodattimena katsottuna liikkuva keskiarvo suorittaa tulojakson (xn) konvoluutiota suorakulmaisella pulssilla, jonka pituus (N) ja korkeus (1 N) (jotta saadaan pulssin alue ja näin ollen suodattimen vahvistus , yksi ). Käytännössä on parasta ottaa (N) outoa. Vaikka liikkuvan keskiarvon voidaan myös laskea käyttämällä parempaa näytemäärää käyttämällä parittomalla arvolla (N) on se etu, että suodattimen viive on näytteiden kokonaisluku, koska suodattimen viive (N) näytteet ovat täsmälleen ((N-1) 2). Liikkuva keskiarvo voidaan sitten kohdistaa täsmälleen alkuperäisen datan kanssa siirtämällä se kokonaislukumäärällä näytteitä. Aika-alue Koska liikkuva keskiarvo on suorakaiteen muotoinen pulssi, sen taajuusvaste on sinc-funktio. Tämä tekee siitä jotain ikkunan-sinc-suodattimen kaksoisosaa, koska se on konvoluutio sinc-pulssilla, joka johtaa suorakulmainen taajuusvaste. Se on tämä sync-taajuusvaste, joka tekee liikkuvasta keskiarvosta huono suorituskyky taajuustasossa. Se kuitenkin toimii hyvin aikatasossa. Tästä syystä se on täydellinen sujuvaa dataa melun poistamiseksi samalla säilyttäen samalla nopean askelvasteen (kuva 1). Tyypillisesti oletetaan, että tyypillisen additiivisen valkoisen Gaussin melun (AWGN) avulla keskiarvot (N) - näytteet lisää SNR-arvoa kertoimella (sqrt N). Koska yksittäisten näytteiden melu ei ole riippuvainen, ei ole mitään syytä käsitellä jokaista näytettä eri tavalla. Näin ollen liikkuvan keskiarvon, joka antaa jokaiselle näytteelle saman painon, päästää melun enimmäismäärän tietylle askeleen vasteen terävyydelle. Toteutus Koska se on FIR-suodatin, liikkuva keskiarvo voidaan toteuttaa konvoluutiolla. Sillä on sama tehokkuus (tai sen puute) kuin mikä tahansa muu FIR-suodatin. Se voidaan kuitenkin toteuttaa myös rekursiivisesti, erittäin tehokkaasti. Tästä seuraa suoraan määritelmästä, että Tämä kaava on (yn) ja (yn1): n lausekkeiden tulos, ts. Kun huomaamme, että (yn1): n ja yn: n välinen muutos on, että ylimääräinen termi (xn1N) lopussa, kun taas termi (xn-N1N) poistetaan alusta. Käytännön sovelluksissa on usein mahdollista jättää jako (N) kullekin termille korvaamalla tuloksena oleva (N) voitto toisessa paikassa. Tämä rekursiivinen toteutus on paljon nopeampi kuin konvoluution. Jokainen uusi arvo (y) voidaan laskea vain kahdella lisäyksellä, sen sijaan, että (N) lisäykset olisivat välttämättömiä määritelmän suoraviivaiselle toteutukselle. Yksi asia, jota on syytä tarkkailla rekursiivisella toteutuksella, on pyöristysvirheiden kertyminen. Tämä saattaa olla ongelma sovelluksessasi, mutta se merkitsee myös sitä, että tämä rekursiivinen toteutus toimii paremmin kokonaislukujen toteutuksessa kuin liukuluvuissa. Tämä on varsin epätavallista, koska liukulukun toteutus on yleensä yksinkertaisempaa. Kaiken tämän johtopäätöksenä on oltava, että et saa koskaan aliarvioida yksinkertaisen liukuvan keskimääräisen suodattimen hyödyllisyyttä signaalinkäsittelysovelluksissa. Suodatussuunnittelutyökalu Tätä artikkelia täydentää suodatussuunnittelutyökalu. Kokeile eri arvoja (N) ja visualisoi saadut suodattimet. Kokeile nyt MATLABin käyttämistä, 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 yläosaan. 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ä: etsin hieman opastusta CONVN: n käyttämisestä laskemalla liukuvat keskiarvot yhteen dimensioon 3d-matriisissa. Minulla on vähän kiinni kernelin kääntämisestä huuvan alle ja toivon, että joku voisi selventää minulle käyttäytymistä. Samankaltainen viesti, joka vielä on minulle hieman sekava on täällä: Minulla on päivittäin joki - ja säävirtaustietoja vesistöstä eri lähdealueilla. Joten matriisi on niin, dim 1 (rivit) edustavat jokaista kohtaa 2 (sarakkeet) edustavat päivämäärää 3 (sivut) edustavat eri mittaustyyppiä (jokien korkeus, virtaus, sademäärä jne.). on yrittää käyttää CONVN: ää ottamaan 21 vuorokauden liukuva keskiarvo kussakin sivustossa kullekin muuttujalle jokaisen tarkkailupisteen osalta. Kuten ymmärrän, minun pitäisi vain käyttää aa ydintä, kuten: yritin soittaa ja luoda toisen ytimen, joka myös toimii (mielestäni) ja asettaa ker2: Tulokset eivät ole aivan ottelun ja Im ihmettelevät, jos minulla on mittasuhteet ovat virheellisiä tässä ytimessä. Kaikki ohjeet ovat suuresti arvokkaita. BTW, sinulla on symmetrinen ydin, joten kääntämisen ei pitäisi vaikuttaa konvoluutioon. Mitä olet määrittänyt on tavallinen liukuva keskiarvoistamisjärjestelmä, joten konvoluutiolla pitäisi olla työtä etsimässäsi liukuva keskiarvo. mutta olen hieman hämmentynyt, koska sanoit, että edellä ei toimi. ndash rayryeng 31. toukokuuta 15 klo 20:17 Se on täysin sinun puolestasi :). Kysymys sinulla on kelvollinen (ei pun intended), joka vie paljon ihmisiä. Jos haluat, että se pysyy, voin kirjoittaa vastauksen, jossa esitetään yhteenveto siitä, mistä puhumme. Jos haluat peruuttaa vastauksen poistamisen, se ei ole ollenkaan ongelma. Haluan tietää, mitä haluat tehdä ndash rayryeng 31. toukokuuta 15 klo 20:39 Kun olet arvioinut kysymyksen kontekstista, sinulla on 3D-matriisi ja haluat etsiä kunkin rivin liikkuvan keskiarvon itsenäisesti kaikissa 3D-viipaleissa. Edellä olevan koodin pitäisi toimia (ensimmäinen tapaus). Kelvollinen lippu palauttaa kuitenkin matriisin, jonka koko on pätevä konvoluutiota koskevien rajojen suhteen. Tutustu tarkemmin siihen viestin ensimmäiseen kohtaan, johon olet liittänyt. Erityisesti kunkin rivin ensimmäiset 21 merkintä puuttuu kelvollisen lipun vuoksi. Vain kun tulet jokaisen rivin 22. sisääntuloon, konvoluutiokehys tulee kokonaan matriisin riviin ja siitä lähtien, kun saat kelvollisia tuloksia (ei pun-tarkoitusta). Jos haluat nähdä nämä merkinnät rajoissa, sinun on käytettävä samaa lippua, jos haluat säilyttää saman kokoista matriisia kuin syöttö tai koko lippu (joka on oletusarvo). äärimmäisimmät ulomman reunat, mutta muista, että liukuva keskiarvo tehdään nollan joukolla, joten ensimmäiset 21 merkintää ei olisi mitä odotat joka tapauksessa. Kuitenkin, jos Im tulkitsee mitä olet pyytänyt, niin kelvollinen lippu on mitä haluat, mutta muista, että sinulla on 21 merkintää puuttuu mukautumaan reuna tapauksissa. Kaiken kaikkiaan koodisi pitäisi toimia, mutta ole varovainen tulosten tulkinnasta. BTW, sinulla on symmetrinen ydin, joten kääntämisen ei pitäisi vaikuttaa konvoluutioon. Mitä olet määrittänyt on tavallinen liukuva keskiarvoistamisjärjestelmä, joten konvoluutiolla pitäisi olla työtä etsimässäsi liukuva keskiarvo.

Comments

Popular Posts