Liukuva Keskiarvo C Koodi


Onko mahdollista siirtää liikkuvan keskiarvon C: ssä ilman näytteen ikkunaa. Olen huomannut, että voin optimoida hieman, valitsemalla ikkunan koon, jonka teho on kaksi, jotta voidaan vaihtaa bitin sijasta, mutta puskuri ei tarvitsisi olla mukava Onko olemassa keino ilmaista uutta liikkuvaa keskimääräistä tulosta vain vanhan tuloksen ja uuden mallin funktiona. Määritä esimerkki liikkuvasta keskiarvosta 4 näytteen ikkunan poikki. Lisää uusi näyte eA liikkuva keskiarvo voidaan toteuttaa rekursiivisesti, mutta tarkan laskennan liikkuva keskiarvo sinun täytyy muistaa vanhin tulon näytteen summa eli a oman esimerkin pituus N liikkuva keskiarvo lasketaan. where yn on lähtösignaali ja xn on tulosignaali Eq 1 voidaan kirjoittaa rekursiivisesti niin. Joten sinun täytyy aina muistaa näytteen x nN jotta voidaan laskea 2.As huomautti Conrad Turner, voit käyttää äärettömän pitkää eksponentiaalinen ikkuna sen sijaan, jonka avulla voit laskea tuotos vain menneisyydestä ulos mutta tämä ei ole tavanomainen painottamaton liukuva keskiarvo vaan eksponentiaalisesti painotettu liukuva keskiarvo, jossa näytteet aiemmin pienentävät painoa, mutta ainakin teoriassa et koskaan unohda mitä tahansa painoja vain pienemmiksi ja pienemmiksi näytteet kaukana aiemmin. Olen toteutettu liukuva keskiarvo ilman yksittäisiä elementti muisti GPS seuranta-ohjelma kirjoitin. Olen aloittaa 1 näyte ja jakaa 1 saadaksesi nykyisen avg. I sitten lisätä anothe näyte ja jakaa 2 on nykyinen avg. This jatkuu, kunnes saan keskimääräisen pituuden. Jokainen aika myöhemmin, lisään uuteen näyte, saat keskimäärin ja poista keskimääräinen kokonaismäärästä. En ole matemaatikko, mutta tämä tuntui hyvältä tee se Ajattelin, että se kääntyisi todellisen matemaattisen kaverin vatsasta, mutta osoittautuu, että se on yksi hyväksytty tavoista tehdä se Ja se toimii hyvin Muista vain, että mitä korkeampi pituus on, sitä hitaammin se seuraa mitä haluat noudattaa Siitä ei ole väliä eniten aika, mutta kun seuraavat satelliitit, jos olet hidas, polku voi olla kaukana varsinaisesta sijainnista ja se näyttää huonolta. Sinulla voi olla aukko satun ja jälkipisteen välillä. Valitsin pituuden 15 päivitettyä 6 kertaa minuutissa. saada riittävän tasoituksen ja ei saa liian kaukana varsinaisesta sat-asemasta tasoitetun polun dots. answered Nov 16 16 at 23 03.initialize yhteensä 0, laskea 0 joka kerta kun näkee uuden arvon. On sitten yksi tulo scanf, yksi lisää yhteensä newValue, yksi lisäysluku, yksi jakaa keskimääräinen kokonaislaskenta. Tämä olisi liikkuva keskiarvo kaikkien tulojen suhteen. Laskettaessa keskimäärin vain viimeisten neljän tulon osalta, tarvitaan 4 tulomuuttujaa, jotka ehkä kopioivat jokaisen tulon vanhemmalle inputvariable-tilille ja lasketaan sitten uusi liikkuva Keskimäärin neljän syöttövirraryhmän summana jaettuna 4 oikealla siirtymällä 2 olisi hyvä, jos kaikki panokset olisivat positiivisia keskimääräisen laskennan tekemiseksi. Vastaus 3 15 helmikuu 4 06. Tämä vastaa todellisuudessa keskimääräistä kokonaismäärää eikä liukuvaa keskiarvoa laskeudu s suuremman vaikutuksen tahansa uuden tulonäytteen muuttuu äkillisesti pieneksi Hilmar Feb 3 15 klo 13 53. Your Answer.2017 Stack Exchange, Inc. Tiedän, että tämä on saavutettavissa lisäämällä per. But haluan todella välttää käyttää boost Olen googlessa eikä löytänyt mitään sopivia tai luettavia esimerkkejä. Oikeasti haluan seurata liikkuvan keskiarvon jatkuvan virtauksen virtaa kelluvia pisteitä käyttäen viimeisimpiä 1000 numeroita datanäytteeksi. Mikä on helpoin tapa saavuttaa tämä. I kokeillut käyttäen pyöreää ryhmää, eksponentiaalista liikkumavälinettä ja yksinkertaisempaa liikkuvaa keskiarvoa ja havaitsin, että pyöreän taulukon tulokset sopivat tarpeeseeni parhaiten. 12.12. 12.4. 38. Jos tarpeitasi ovat yksinkertaisia, voit vain yrittää käyttää eksponentiaalinen liukuva keskiarvo. Voit yksinkertaisesti tehdä akun muuttuja, ja kun koodisi tarkastelee jokaista näyte, koodi päivittää akun uudella arvolla Valitset jatkuvan alfa, joka on välillä 0 ja 1, ja laskea tämä. Sinun tarvitsee vain löytää arvon a lpha, jossa tietyn näytteen vaikutus kestää vain noin 1000 näytettä. Hmm, en ole varma siitä, että tämä on sopiva sinulle, nyt kun olen pannut sen tänne Ongelmana on, että 1000 on melko pitkä ikkuna eksponentiaaliseen liukuvaan keskiarvoon En ole varma, että on olemassa alfaa, joka levisi keskimäärin viimeisten 1000 numeron aikana ilman alivirtausta liukulukulaskennassa. Mutta jos haluat pienemmän keskiarvon, kuten 30 numeroa, niin tämä on erittäin helppo ja nopea tapa tehdä se vastasi 12.6.1999 klo 4 44. 1 postillasi Eksponentiaalinen liukuva keskiarvo voi sallia alfan muuttuvan. Joten tämä mahdollistaa sen, että sitä voidaan käyttää laskentataulukoiden keskiarvoihin, esim. tavut sekunnissa. Jos viimeisen akun päivityksen aika on enemmän kuin 1 sekunnin, anna alfa olla 1 0 Muutoin voit antaa alfa olla usecs viime päivityksen jälkeen 1000000 jxh 12 kesäkuu 12 at 6 21.Oikeastaan ​​haluan seurata liikkuvan keskiarvon jatkuvan virta virran kelluvia pisteitä käyttäen tuoreimmat 1000 numerot datanäytteeksi. Ei e, että alla päivitetään kokonaissumma lisättyinä lisättyinä elementteinä, välttäen kalliin ON-siirtymän summan laskemiseksi - tarvitaan keskimäärin - kysyntään. Kokonaisparametri on T: stä tukemaan esimerkiksi pitkiä pitkiä, kun yhteensä 1000 pitkä s , int on char s tai double to total float s. Tämä on hieman virheellinen, että numsamples voisi mennä ohi INTMAX - jos välität voit käyttää allekirjoittamaton pitkä pitkä tai käyttää ylimääräistä bool tietojen jäsen tallentaa, kun kontti ensin täytetään pyöräilemällä numsamples ympärillä array parasta sitten nimetty jotain harmittomia kuten pos. answered Jun 12 12 klo 5 19.one olettaa, että tyhjä operaattori T näyte on todellisuudessa tyhjä operaattori T näyte oPless 8 kesäkuu 14 at 11 52. oPless ahhh well spotted itse asiassa tarkoitin sitä, että se olisi tyhjä operaattorin T-näytteelle, mutta tietysti voit käyttää mitä tahansa merkitsemääsi pidätte Will korjaa, kiitos Tony D 8 14 14 14 27. Kuten muut ovat maininneet, sinun pitäisi harkita IIR ääretön impulssivasteen suodatin sijaan FIR-rajallinen i mpulse - vastesuodatin, jota käytät Nyt on enemmän, mutta ensi silmäyksellä FIR-suodattimet toteutetaan eksplisiittisina konvoluutoina ja IIR-suodattimina yhtälöillä. Erityinen IIR-suodatin, jota käytän paljon mikrokontrollereissa, on yksi napainen alipäästösuodin Tämä on digitaalinen vastaava yksinkertainen RC-analoginen suodatin Useimmissa sovelluksissa niillä on paremmat ominaisuudet kuin käyttämääsi laatisuodattimella Useimmat käyttämät laatusuodattimet joita olen kohdannut ovat seurausta siitä, että joku ei kiinnitä huomiota digitaaliseen signaalinkäsittelyluokkaan, ei koska ne tarvitsevat niiden erityisominaisuuksia Jos haluat vain vaimentaa korkeita taajuuksia, jotka tunnet ovat melua, yksi napainen alipäästösuodatin on parempi Paras tapa toteuttaa yksi digitaalisesti mikro on yleensä. FILT - FILT FF NEW - FILT. FILT on pala pysyvästä tilasta Tämä on ainoa pysyvä muuttuja, jonka sinun on laskettava tämä suodatin UUTUUS on uusi arvo, jota suodatin päivitetään tällä iteroinnilla FF on suodatinfraktio, joka säätää suodattimen raskautta Katso tämä algoritmi ja katso, että FF 0: lle suodatin on äärettömän raskas, koska lähtö ei koskaan muutu FF: lle 1, se ei todellakaan ole ollenkaan suodatinta, koska lähtö vain seuraa syöttöä Hyödylliset arvot ovat välillä pienillä järjestelmillä, kun valitset FF: n olevan 1 2 N niin, että kerrotaan FF: llä voidaan suorittaa oikea siirtymä N-biteillä. Esimerkiksi FF voi olla 1 16 ja FF: n kertoo oikea siirtymä 4 bittiä Muussa tapauksessa tämä suodatin tarvitsee vain yhden vähentää ja yksi lisätään, vaikka numeroiden on yleensä oltava leveämpi kuin syöttöarvo enemmän numeerista tarkkuutta erillisessä osiossa below. I yleensä ottaa AD lukemat huomattavasti nopeammin kuin tarvitaan ja soveltaa kaksi nämä suodattimet kasaantui Tämä on kahden RC-suodattimen digitaalinen ekvivalentti sarjassa ja vaimentaa 12 dB: n oktaavilla rolloff-taajuuden yläpuolella. AD-lukemien yläpuolelle on kuitenkin yleensä tärkeämpää tarkastella suodatinta aikatasossa kuinka nopeasti järjestelmäsi näkee muutoksen, kun mittaamasi materiaali muuttuu. Toisten suodattimien suunnittelun helpottamiseksi vain FF: n poimiminen ja sen määrittäminen, kuinka monta niistä kasaantuu, käytän ohjelmaa FILTBITS. siirtobittien lukumäärä kutakin FF: ää varten kaskadatun suodattorisarjan kohdalla ja se laskee vaiheen vasteen ja muut arvot Itse olen yleensä suorittanut tämän kääreen käsikirjoituksen PLOTFILT avulla Tämä suorittaa FILTBITS, joka tekee CSV-tiedoston ja piirtää sitten CSV-tiedoston Esimerkiksi , tässä on tuloksena PLOTFILT 4 4.Toiset parametrit PLOTFILT tarkoittavat, että edellä kuvatulla tavalla on kaksi suodatinta, jotka on kaskadattu. 4: n arvot osoittavat siirrosbitien lukumäärän FF: n kertoimen toteuttamiseksi. Kaksi FF-arvoa ovat siis 1 Esimerkiksi tämä kertoo, että jos syöttö muuttuu hetkellisesti, yhdistetyn suodattimen lähtö laskeutuu 90: een uudesta arvo 60 toistuvuudessa Jos olet huolestunut 95 asettumisaikaa, sinun on odotettava noin 73 toistoa ja 50 asettumisaikaa vain 26 toistoa. Vihreä jälki näyttää yhden ainoan täyden amplitudipiikin lähdön Tämä antaa sinulle käsityksen satunnaisesta melun vaimennus Näyttää siltä, ​​että mikään yksittäinen näyte ei aiheuta yli 2 5 muutosta lähtöön. Sininen jälki on antaa subjektiivinen tunne siitä, mitä tämä suodatin tekee valkoisen melun kanssa. Tämä ei ole tarkka testi, koska ei ole takeita siitä, mitä tarkalleen sisältö oli satunnaisluvuista, jotka on valittu valkoiseksi melutiedoksi tähän PLOTFILT-juoksuun. Se vain antaa sinulle karkea tunne siitä, kuinka paljon se puristuu ja miten sileä on. PLOTFILT, ehkä FILTBITS ja paljon muuta hyödyllistä tavaraa, varsinkin PIC-firmware-kehitystä varten, on saatavilla PIC Development Tools - ohjelmistopäivityksessä minun Software downloads - sivulla. Lisätty numeerisesta tarkkuudesta. Näen kommentit ja nyt uusi vastaus, että on kiinnostusta keskustella hän tarvitsee tämän suodattimen toteuttamiseen tarvittavien bittien määrän Huomaa, että FF: n kertoimella luodaan lokitiedon alapuolella olevat Log 2 FF - bitit Pienissä järjestelmissä FF valitaan yleensä 1 2 N niin, että tämä kerrotaan todellisuudessa oikealla siirtymällä FILT on siis yleensä kiinteä pisteen kokonaisluku Huomaa, että tämä ei muuta mitään matematiikkaa prosessorin näkökulmasta Esimerkiksi, jos suodat 10 bittinen AD-lukemat ja N 4 FF 1 16, niin tarvitset 4 bittiä bittiä alle 10-bittisen kokonaislukuarvon AD-lukemat Yksi useimmista prosessoreista, sinun on tehtävä 16-bittisiä kokonaislukuja 10-bittisten AD-lukemien ansiosta. Tässä tapauksessa voit silti tehdä täsmälleen samoja 16-bittisiä kokonaislukuja, mutta aloittaa AD: llä lukemat vasemmalle siirretty 4 bittiä Prosessori doesn t tiedä eroa ja doesn t tarvitse Tehdä matematiikka koko 16-bittisiä kokonaislukuja toimii, pidät ne 12 4 kiinteä pisteen tai totta 16 bittiä kokonaislukuja 16 0 kiinteää pistettä. Yleensä, sinun on lisättävä N bittiä jokaisen suodattimen napa, jos olet don t haluavat lisätä melua numeerisen esityksen vuoksi Edellä olevassa esimerkissä kahdella toisella suodattimella pitäisi olla 10 4 4 18 bittiä, jotta tietoja ei menetettäisi Käytännössä 8-bittisellä koneella, mikä tarkoittaa, että käytät 24 bittistä arvoa Teknisesti vain kahden toisen napa tarvitsee laajempaa arvoa, mutta firmware yksinkertaisuus Olen yleensä käyttää samaa esitystä, ja siten sama koodi, kaikkien suodattimien navat. Olen yleensä kirjoittaa aliohjelma tai makro suorittaa yksi suodatin napainen toiminta, Sovelletaan sitten jokaista napaa Olipa aliohjelma tai makro riippuu siitä, ovatko syklit tai ohjelmamuistit tärkeämpiä kyseisessä projektissa Joka tapauksessa, käytän jotain raaputustapaa ohittamaan UUSI alirutiinin makroon, joka päivittää FILTin, mutta lataa myös sen sama raaputusstatus UUSI oli tässä Tämä helpottaa useiden napojen käyttämistä, koska päivitetyn FILT on yksi napa seuraavan UUTUU Kun aliohjelmassa on hyödyllistä saada osoitin pisteeseen FILT matkalla, joka on päivitetty vain FILTin jälkeen ulos tieltä Näin aliohjelma toimii automaattisesti peräkkäisissä suodattimissa muistissa, jos sitä kutsutaan useita kertoja Makroon, jota et tarvitse osoitinta, koska siirrät osoitteen toimimaan jokaisella iteraatiolla. esimerkki makroista, kuten yllä on kuvattu PIC: lle 18. Ja tässä on samanlainen makro PIC 24: lle tai dsPIC: lle 30 tai 33. Molemmat esimerkit toteutetaan makroina käyttämällä PIC-kokoonpanijaprosessoria, makrotiloissa. clabacchio Toinen asia, jonka minun olisi pitänyt mainita on firmware-toteutus Voit kirjoittaa yhden napainen alipäästösuodattimen alirutiini kerran ja soveltaa sitä useaan kertaan. Itse kirjoitan yleensä tällaisen alirutiinin ottamaan osoittimen muistiin suodatustilaan, osoitin niin, että sitä voidaan kutsua peräkkäin helposti monipolvisuodattimien toteuttamiseksi Olin Lathrop 20 huhtikuu 2012 klo 15 03.1 kiitos paljon vastauksista - kaikki päätin käyttää tätä IIR-suodatinta, mutta tätä suodatinta ei käytetä Standard LowPass - suodatin, koska tarvitsen keskimäärin vasta-arvoja ja verrata niitä havaitsemaan muutokset tietyllä alueella, koska nämä arvot ovat hyvin erilaisia ​​mittasuhteita riippuen laitteistosta, jonka halusin ottaa keskimäärin, jotta voimme reagoida näihin laitteisiin tiettyjä muutoksia automaattisesti sensslen 21 toukokuu 12 klo 12 06.Jos voit elää rajoittamalla teho kahden määrän kohteita keskimäärin eli 2,4,8,16,32 jne. sitten jakaminen voidaan helposti ja tehokkaasti tehdä alhaisen suorituskyvyn mikro ilman erillistä jakoa, koska se voidaan tehdä vähän siirrettävänä Jokainen siirto oikea on yksi voima kahdesta. OP toivoi, että hänellä oli kaksi ongelmaa, jotka jakautuivat PIC16: een ja muistiin hänen rengaspuskurilleen. Tämä vastaus osoittaa, että jakaminen ei ole vaikeaa Tosin se ei käsittele muistiongelmia, mutta SE-järjestelmä mahdollistaa osittaiset vastaukset ja käyttäjät voivat ottaa jokaisesta vastauksesta itselleen jotain tai jopa muokata ja yhdistää muiden vastausten vastauksia Koska jotkin muut vastaukset edellyttävät jako-operaatiota ovat samalla puutteellisia, koska ne eivät osoita, miten tehokkaasti tämä saavuttaa PIC16 Martin huhtikuu 20 12 klo 13 01.There on vastaus todellista liikkuvaa keskimääräistä suodatin aka boxcar suodatin, jossa on vähemmän muistia vaatimuksia, jos et mielessä downsampling It s nimeltään kaskadattu integraattori-kampasuodatin CIC Ajatuksena on, että sinulla on integraattori, jonka otat eroja ajanjaksolta, ja tärkein muistia säästävä laite on, että alaspäin näytteenoton avulla sinun ei tarvitse tallentaa evea ry: n integraattorin arvoa. Se voidaan toteuttaa käyttämällä seuraavia pseudokoodeja. Tehokas liikkuva keskimääräinen pituus on desimaalimuutos. Factor ilmoittaa, mutta sinun on vain pidettävä ympärilleen statesize otoksia. Tietenkin voit saada parempaa suorituskykyä, jos stateize ja decimationFactor ovat voimia 2, niin että divisioona ja loput operaattorit korvataan muutoksilla ja mask-ands. Postscriptillä Olen samaa mieltä Olinin kanssa siitä, että sinun pitäisi aina harkita yksinkertaisia ​​IIR-suodattimia ennen liikkuvan keskimääräisen suodattimen käyttöä Jos et tarvitse vaunun suodattimen taajuus-nollia, 1-napainen tai 2-napainen alipäästösuodatin todennäköisesti toimivat hienosti. Toisaalta, jos suodatetaan desimaatiotarkoituksessa ottamalla suuren näytteenottotaajuuden syöttö ja laskemalla se keskiarvoiseksi käytettäväksi alhaisen nopeuden prosessissa, niin CIC-suodatin voi olla juuri sitä, mitä etsit erityisesti, jos voit käyttää statesize 1 ja välttää ringbuffer kokonaan vain yhden edellisen integraattorin arvo. On s syvällinen analyysi matematiikkaa taakse käyttäen ensimmäinen ord er IIR - suodatin, jonka Olin Lathrop on jo kuvannut Digital Signal Processing - pinoinnissa, sisältää paljon kauniita kuvia. Tämä IIR-suodattimen yhtälö on. Tämä voidaan toteuttaa käyttämällä vain kokonaislukuja eikä jakamista käyttäen seuraavaa koodia tarvita virheenkorjausta I kirjoitti muistista. Tämä suodin lähentää viimeisten K-näytteiden liikkuvaa keskiarvoa asettamalla alfa-arvon 1 K: lle. Tee tämä edellisessä koodissa määrittämällä BITS: n LOG2 K: lle eli K 16 asetetun BITS: n 4: lle K: lle 4 asetettu BITS 2, jne. Ll ll tarkistaa koodi tässä, kun saan muutoksen ja muokata tätä vastausta tarvittaessa. Vastattu Joulu 23 12 klo 4 04. Tässä yksi napainen alipäästösuodatin liikkuva keskiarvo, rajataajuus CutoffFrequency Erittäin yksinkertainen, erittäin nopea, toimii hyvin ja melkein ei ole muistin yläpuolella. Nuomi Kaikki muuttujat ovat suodattimen ulkopuolella, lukuun ottamatta ohitettua newInput. Note Tämä on yhden vaiheen suodatin Useita vaiheita voidaan yhdistää yhdessä kasvattamaan terävyys suodatin Jos käytät useampaa kuin yhtä vaiheta, sinun täytyy säätää DecayFactor-arvoa, joka liittyy Cutoff-taajuuteen kompensoimaan. Ja kaikki mitä tarvitset ovat nämä kaksi riviä sijoitettu missä tahansa, he eivät tarvitse omaa toimintoa. Tämä suodattimessa on nousupyyntöaika ennen liikkuvaa keskiarvoa on tulosignaalin taso. Jos sinun on ohitettava tämä nousupotentiaali, voit alustaa MovingAveragein uuden tulon ensimmäiseen arvoon 0 sijasta ja toivottavasti ensimmäinen uusi tulo ei ole outlier. CutoffFrequency SampleRate on välillä 0 ja 0 5 DecayFactor on arvo välillä 0 ja 1, yleensä lähellä 1. Yksinkertainen tarkkuus kellukkeet ovat tarpeeksi hyviä useimpiin asioihin, mieluummin kaksinkertaistuu Jos sinun on pidettävä kokonaislukuja, voit muuntaa DecayFactor ja Amplitude Factor osaksi murto-kokonaislukuja, joissa numeerinen tallennetaan kokonaislukuna ja nimittäjä on kokonaisluku 2, joten voit siirtyä oikealle nimittäjänä pikemminkin kuin jakaa suodattimen silmukan aikana. Esimerkiksi, jos DecayFactor 0 99 ja haluat käyttää kokonaislukuja, voit asettaa DecayFactor 0 99 65536 64881 ja sitten milloin tahansa kerrotaan DecayFactorilla suodatussilmukassasi, siirrä vain tulosta 16. Lisätietoja tästä erinomaisesta kirjasta s online, luku 19 rekursiivisista suodattimista. PS Liikkuvaa keskimääräistä paradigmaa varten on erilainen lähestymistapa DecayFactorin ja AmplitudeFactorin asettamiseen, jotka saattavat olla tarpeellisempia tarpeidesi mukaan, sanotaan, että haluat edellisen, noin 6 kohdetta keskimäärin eetteriä, tehden sen discretely, voit lisätä 6 kohdetta ja jakaa 6, joten voit asettaa AmplitudeFactor on 1 6, ja DecayFactor on 1 0 - AmplitudeFactor. vastattu 14. toukokuuta 12 klo 22 55. Jokainen muu on kommentoinut perusteellisesti apuohjelma IIR vs. FIR ja kahdella divisioolla I d vain anna joitakin toteutus yksityiskohtia Alla toimii hyvin pieniä mikro-ohjaimia ilman FPU Ei ole mitään kertolaskua, ja jos pidät N kahden voima, kaikki jako on yhden kierroksen bittivaihtelu. FIR-rengaspuskuri pitää viimeisen N-arvojen käynnissä olevan puskurin ja kaikkien puskurin arvojen juoksevan SUM-arvon. Joka kerta, kun uusi näyte tulee sisään, vähennä puskurin vanhin arvo SUM: sta , korvaa se uudella näytteellä, lisää uusi näyte SUM: iin ja tuottaa SUM N. Modified IIR - rengaspuskurin pitää viimeisen N-arvon SUM-käynnissä. Aina kun uusi näyte tulee, SUM - SUM N, lisää uuteen näyte ja tuotos SUM N. vastattu 28 elokuu 13 klo 13 45.Jos olen lukenut sinua oikein, olet kuvata ensimmäisen asteen IIR suodata arvo, jonka olet vähentänyt isn t vanhin arvo, joka putoaa, mutta on sen sijaan keskimäärin edellisten arvojen First order IIR suodattimet voivat olla varmasti hyödyllisiä, mutta en ole varma, mitä tarkoitat, kun ehdotat, että tuotos on sama kaikissa jaksottaisissa signaaleissa 10 kHz: n näytteenottotaajuudella syötetään 100 Hz: n kenttä aalto 20-vaiheiseen laatikkosuodattimeen, joka tuottaa 20 näytettä tasaisesti kohottavan signaalin, istuu korkealle 30: lle, laskee tasaisesti 20 näytettä ja istuu alhaalla 30: lle ensimmäisen kertaluvun IIR-suodattimen supercat 28. elokuuta 13 klo 15 31. tuottaa aallon, joka alkaa jyrkästi nousta ja vähitellen laskeutuu lähelle mutta ei sisääntulomaksimittarilla, sitten alkaa jyrkästi laskea ja laskeutuu vähitellen lähelle mutta ei tuloa vähimmäismäärä Hyvin erilainen käyttäytyminen supercat 28. elokuuta 13 klo 15 32.On kysymys on, että yksinkertainen liukuva keskiarvo voi olla tai ei välttämättä ole hyötyä IIR-suodattimen avulla saat mukavan suodattimen, jossa on suhteellisen vähän kalkkia. suorakulmio ajassa - sinc in freq - ja et voi hallita sivulohkoja Se voi olla sen arvoista heittää muutaman kokonaisluku kertoo, jotta se olisi mukava symmetrinen viritettävä FIR, jos voit säästää kello punkkien Scott Seidman 29 elokuu 13 klo 13 50. ScottSeidman Ei tarve kertoa, jos jokainen FIR: n jokainen vaihe joko antaa tuloksen keskiarvon tähän vaiheeseen ja sen aiempi tallennettu arvo ja sitten tallentaa syötteen, jos sillä on numeerinen alue, voitaisiin käyttää summaa keskimäärin. s kuin laatikkosuodatin on riippuvainen sovelluksesta, laukaisusuodattimen vaihevaste, jonka kokonaisviive on 1 ms, on esimerkiksi ikävä d2-dt-piikki, kun tulo muuttuu ja 1 ms myöhemmin, mutta sillä on mahdollisimman pieni arvo d dt suodattimelle, jossa on yhteensä 1 ms viive supercat 29 elokuu 13 klo 15 25. Kuten mikeselectricstuff sanoi, jos todella tarvitset vähentää muistintarpeitasi, etkä pidä impulssivastetta eksponentiaalisena suorakulmainen pulssin sijasta, I olisi eksponentiaalinen liikkuva ave raivosuodatin Käytän niitä laajasti Tämäntyyppisellä suodattimella sinun ei tarvitse tarvita mitään puskuria Sinun ei tarvitse tallentaa aiempia näytteitä Vain yksi Joten, muistivaatimukset saavat leikata tekijä N. Also, et tarvitse mitään divisioona, että vain kertolaskuja Jos sinulla on mahdollisuus käyttää liukulaskennan aritmeettista, käytä liukulukuisia kertolaskuja Muussa tapauksessa suorita kokonaisluku kertolaskuja ja siirry oikealle Mutta olemme kuitenkin vuonna 2012 ja suosittelen sinua käyttämään kääntäjiä ja MCU: ita, jotka sallivat sinun toimimaan kelluvilla numeroilla. Sen lisäksi, että muistit ovat tehokkaampia ja nopeampia, sinun ei tarvitse päivittää kohteita missään pyöreässä puskurissa, sanoisin, että se on myös luonnollisempi, koska eksponentiaalinen impulssivaste vastaa paremmin tapaa, jolla luonto käyttäytyy useimmissa tapauksissa Vastaus IIR-suodattimen koskettimina oli olin ja supercat, mutta silti ilmeisesti muiden huomioimatta, että pyöristys alaspäin aiheuttaa jonkin verran epätarkkuutta ja mahdollisesti bias-katkaisua olettaen, että N i sähkön teho on kaksi ja vain kokonaisluku aritmeettinen, siirtymäoikeus poistaa järjestelmällisesti uuden näytteen LSB: t. Tämä tarkoittaa sitä, että kuinka kauan sarja voi olla, keskiarvo ei koskaan ota niitä huomioon. Esimerkiksi oletetaan, että hitaasti laskeva sarja 8,8,8 8,7,7,7 7,6,6 ja ota olettaa, että keskiarvo on todellakin 8 alussa Ristin 7 näytettä tuo keskimäärin 7, riippumatta suodattimen vahvuudesta Vain yksi näyte Sama tarina 6: lle, jne. Ajattele päinvastoin sarja nousee. Keskimäärin pysyy 7: llä ikuisesti, kunnes näyte on tarpeeksi suuri muutoksen tekemiseksi. Tietenkin voit korjata esijännitys lisäämällä 1 2 N 2, mutta joka ei onnistunut ratkaisemaan tarkkuusongelmia, tapauksessa, että vähenevä sarja pysyy ikuisesti 8: ssa, kunnes näyte on 8-1 2 N 2 Esimerkiksi N 4: lle nollaa edustava näyte pitää keskimäärin ennallaan. se tarkoittaisi pidättämään menetetyn LSB: n akun. Mutta en tehnyt tarpeeksi kauaa, jotta koodi olisi valmis, ja en ole varma, että se ei vahingoittaisi IIR-tehoa joissakin muissa sarja-tapauksissa esimerkiksi 7,9,7,9 keskimäärin 8 sitten. Olin, sinun kaksivaiheinen kaskadi tarvitsisi myös selitystä. Tarkoitatko, että pidät keskimäärin kaksi keskiarvoa ensimmäisen tuloksen tuloksena jokaiseen iteraatioon. Mitä hyötyä tästä on?

Comments

Popular Posts