Kauppasovelluksessani on eläviä pörssejä osakekursseista, joita minun pitää pitää yllä SMA: ssa Sallikaa, että haluan SMA: n 20 kynttilää, joissa jokaisen kynttilän kesto on 10 sekuntia Tämä tarkoittaa sitä. Jokaisella 10 sekunnilla minulla on tarkistuspiste, missä. ja tallentaa keskihinta viimeisten 10 sekunnin aikana Keskiarvo on max - min 2.I alkaa uusi kynttilä ja tallentaa viimeinen price. I puhdistaa vanhentunut kynttilä. I päivittää viimeisen hinnan nykyisen muodostaa kynttilä ja laskea uudelleen SMA. Joten mitä tahansa rasti tarvitsen SMA: n uudelleenlaskenta Useimmissa tapauksissa vain viimeisen kynttilän hinta muuttuu, koska käytämme viimeistä hintaa Kerran 10 sekunnissa tarvitsen hieman ylimääräistä työtä - minun täytyy unohtaa vanhentuneen kynttilän keskiarvo ja tallentaa vain syntyneen kynttilän keskiarvo. Voitteko ehdottaa, miten tämä toteutetaan alhaisin latenssin kanssa? Alhainen latenssi on ensisijainen vaatimus. Toukokuu 28 14 at 10 21.I ei ole varma, onko tämä lähestymistapa etsit, mutta tässä on pseudokoodi erittäin nopeille SMAs. Simple Moving Average Oletan, että tietosi alkavat g muodossa jonkin virran ja tallennetaan jatkuvassa muistipaikassa ainakin jatkuvasti osoitettavien osoitteiden kanssa. Tällöin kahdella lisäyksellä ja yhdellä kertoimella 1 2000 voit luoda seuraavia liikkuvia keskiarvoja uusille punkkeille. Eksponentiaalinen liukuva keskiarvo Tämä on kunnollinen vaihtoehto , kuten edellä mainittiin. Koska se ei todellakaan ole N-päiväinen liukuva keskiarvo Se on vain painotettu liukuva keskiarvo.87 punnitus viimeisinä N-päivää, joten lähes N-päivää on enemmän kuin se. Kuitenkin kääntäjän optimoinnit. Huomaa, että SSE - tai AVX-vaihtoehtojen käyttöönotto, jos sellainen on mahdollista, mahdollistaa näiden algoritmien massiivisen nopeuden, koska useat laskelmat voidaan poistaa samassa CPU-syklissä. Tiedän, että tämä on saavutettavissa lisäyksellä. Mutta en todellakaan halua käyttää boost I: ta on googled eikä löytänyt mitään sopivia tai luettavia esimerkkejä. Oikeudellisesti haluan seurata liikkuva keskiarvo jatkuva virta virta virtaa kelluvia numeroita käyttäen viimeisimmät 1000 numerot tietona näytteen. Mikä on helpoin wa y tämän saavuttamiseksi. Olen kokeillut käyttäen pyöreää taulukkoa, eksponentiaalinen liukuva keskiarvo ja yksinkertaisempi liikkuva keskiarvo ja havaitsin, että tulokset pyöreästä taulukosta sopivat minun tarpeitasi parhaiten. Lähetetty 12. kesäkuuta 12.4 38.Jos tarpeet ovat yksinkertaisia, voit vain yrittää käyttää eksponentiaalisen liikkuvan keskiarvon. Voit yksinkertaisesti tehdä akku muuttuja, ja kun koodi tarkastelee jokaista näytettä, koodi päivittää akun uuden arvon Voit valita vakio alpha, joka on välillä 0 ja 1, ja Lasketaan tämä. Sinun tarvitsee vain löytää alfa-arvo, jossa tietyn näytteen vaikutus kestää vain noin 1000 näytettä. Hmm, en oikeastaan tarkoita, että tämä sopii sinulle, nyt kun olen laittanut sen tänne. 1000 on melko pitkä ikkuna eksponentiaaliseen liukuvaan keskiarvoon En ole varma, että on olemassa alfaa, joka levisi keskimäärin viimeisten 1000 numeroiden aikana ilman alivirtausta liukulukulaskennassa. Mutta jos haluat pienemmän keskiarvon, kuten 30 numeroa tai niin , tämä on erittäin helppo ja f ast way to do it. answered 12 kesäkuu 12 at 4 44. 1 postillasi Eksponentiaalinen liukuva keskiarvo voi sallia alfan muuttuvan. Joten tämän avulla sitä voidaan käyttää laskemaan aikaperusuhteen keskiarvot esim. tavut sekunnissa. Jos viimeisen akun päivitys on yli 1 sekunti, anna alfa olla 1 0 Muuten voit anna alfa olla usecs päivityksen jälkeen 1000000 jxh 12 kesäkuu 12 at 6 21.Oikeastaan haluan seurata liikkuvan keskiarvon jatkuvan virran liukulukujen numerot käyttäen viimeisimpiä 1000 numeroa datanäytteeksi. Huomaa, että alla päivitetään kokonaissumma elementteinä lisättynä lisättynä, välttäen kalliin ON-siirtymän laskea summa, jota tarvitaan keskimäärin - kysynnän mukaan. Yhteensä on tehty erilainen parametri T: stä tukeakseen esim. pitkiä aikoja, kun kyseessä on yhteensä 1000 pitkä s, int char: lle tai kaksinkertainen kokonaiseen float s: iin. Tämä on hieman puutteellinen siinä määrin, että numsamples voisivat ohittaa INTMAX: n - jos välitätte, voit käyttää allekirjoittamatonta pitkä tai käytä ylimääräistä bool datan jäsentä tallentamaan n säiliö täytetään ensimmäistä kertaa samalla, kun pyöräilee numsäytteitä taulukon ympärille parhaiten nimettiin sitten jotain harmittomalta kuten pos. answered Jun 12 12 at 5 19.one olettaa, että tyhjä operaattori T-näyte on itse asiassa mitätön operaattorin T näyte oPless 8 kesäkuu 14 11 52. oPless ahhh hyvin havaittu itse tarkoitti, että se olisi tyhjä operaattori T näyte, mutta tietysti voit käyttää mitä tahansa merkintä pidit Will korjata, kiitos Tony D 8 14 14 14 27. Kuten muut ovat maininneet, sinun pitäisi harkita IIR ääretön impulssivaste suodattimen sijaan FIR äärellistä impulssivastensuodatinta, jota käytät Nyt on enemmän, mutta ensisilmäyksellä FIR-suodattimet toteutetaan eksplisiittisina konvoluuteina ja IIR-suodattimina yhtälöillä. Erityinen IIR-suodatin, jota käytän paljon mikrokontrollereissa, on yksi napainen alipäästösuodin Tämä on yksinkertaisen RC-analogisen suodattimen digitaalinen ekvivalentti Useimmissa sovelluksissa niillä on paremmat ominaisuudet kuin käyttämääsi laatisuodattimella. jotka eivät kiinnitä huomiota digitaali - sen signaalinkäsittelyn luokkaan, ei sen vuoksi, että ne tarvitsevat erityisominaisuuksiaan. Jos haluat vain vaimentaa korkeita taajuuksia, joiden tiedät olevan melua, yhden napainen alipäästösuodatin on parempi. Paras tapa toteutetaan yksi digitaalisesti mikrokontrolleriin. 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ämän kanssa iteraatio 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 1: lle, se ei todellakaan ole ollenkaan suodatinta, koska lähtö vain seuraa tulos Hyödyllisiä arvoja on välillä Pienillä järjestelmillä valitset FF: n olevan 1 2 N niin, että kerrotaan FF: llä voidaan suorittaa oikea siirto N biteillä. Esimerkiksi FF voi olla 1 16 ja FF: n kertoo siis oikea siirto 4 bittiä Muussa tapauksessa tämä suodatin tarvitsee vain yksi vähentää ja yksi lisätä, vaikka numerot yleensä tarvitse olla leveämpi kuin syöttöarvo enemmän numeerista tarkkuutta erillisessä osassa alla. I yleensä ottaa AD lukemat huomattavasti nopeammin kuin niitä tarvitaan ja sovellettava kahta näistä suodattimista kaskadattu Tämä on kahden RC-suodattimen digitaalinen ekvivalentti sarjassa ja heikentää 12 dB: n oktaavin rolloff-taajuuden yläpuolella Kuitenkin AD-lukemien suhteen se on yleensä tärkeämpää tarkastella suodatinta aikatasossa tarkastelemalla sen askelvastaus Tämä kertoo kuinka nopeasti järjestelmäsi näkyy muutos, kun mitataan mittaustasi. Helpottamalla näiden suodattimien suunnittelua, mikä merkitsee vain FF: n poimimista ja päättäen, kuinka monta niistä kasaantuu, käytän ohjelmaa FILTBITS. siirrä bittiä jokaiselle FF: lle kaskadatussa suodinsarjassa ja se laskee vaiheen vasteen ja muut arvot Itse olen yleensä suorittanut tämän kääreen käsikirjoitukseni PLOTFILT Tämä toimii FILT BITS, joka tekee CSV-tiedoston, piirtää CSV-tiedoston. Esimerkiksi tämä on PLOTFILT 4: n tulos. 4. Kahden parametrin PLOTFILT tarkoittaa, että edellä kuvatulla tavalla on kaksi suodatinta, jotka ovat kaskadattuja. shift-bittiä, jotta kerrotaan FF: llä. Kaksi FF-arvoa ovat näin ollen 1 16 tässä tapauksessa. Punainen jälki on yksivaihevaste ja se on tärkein asia tarkastella. Esimerkiksi tämä kertoo, että jos tulo muuttuu hetkellisesti, yhdistetyn suodattimen lähtö laskeutuu 90: aan uudesta arvosta 60 iteraatiossa Jos olet huolestunut 95 asettumisaikaa, sinun on odotettava noin 73 toistoa ja 50 asettumisaikaa vain 26 toistoa. Vihreä jälki näyttää, yksi täysi amplitudi piikki Tämä antaa sinulle käsityksen satunnainen melun vaimennus Näyttää siltä, että mikään yksittäinen näyte aiheuttaa enemmän kuin 2 5 muutos tuotokseen. Sininen jälki on antaa subjektiivinen tunne, mitä tämä suodatin tekee valkoista kohinaa Tämä ei ole ahtaus koska ei ole takeita siitä, mitä sisältöä satunnaislukuista valittiin valkoisen melutason syöttämiseksi tähän PLOTFILT-juoksuun. Se vain antaa sinulle karkea tunne siitä, kuinka paljon se puristuu ja miten sileä se on. PLOTFILT , ehkä FILTBITS ja paljon muuta hyödyllistä tavaraa, erityisesti PIC-firmware-kehitykselle, 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 keskustelevat tämän suodattimen toteuttamiseen tarvittavien bittien lukumäärän merkityksestä Huomaa, että FF: n kertoimella luodaan lokitiedon alapuolelle uusia 2 bittisiä F2-pisteitä Pienissä järjestelmissä FF valitaan yleensä 1 2 N niin, että tämä kerrotaan todellisuudessa oikea N-bittien siirto. FILT on siis yleensä kiinteä pisteen kokonaisluku Huomaa, että tämä ei muuta mitään matematiikkaa prosessorin näkökulmasta Esimerkiksi jos suodatetaan 10-bittiset AD-lukemat ja N 4 FF 1 16, niin sinä tarvitsee 4 bittiä bittiä alle 10-bittisen kokonaislukulaitteen AD-lukemat alle. Useimmat prosessorit, 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, AD-lukemat vasemmalle siirretty 4 bittiä Prosessori ei tunnista eroa ja doesn t tarve Suorittaminen matematiikan koko 16-bittisiä kokonaislukuja toimii, pidätte niitä 12 4 kiinteää pistettä tai totta 16 bittiä kokonaislukuja 16 0 kiinteää pistettä. Yleensä , sinun on lisättävä N-bittiä jokaisen suodatinpylvään kohdalla, jos et halua lisätä melua numeerisen esityksen vuoksi. Yllä olevassa esimerkissä toisen kahdesta suodattimesta tulisi olla 10 4 4 18 bittiä, jotta tietoja ei menetettäisi. 8 bittinen kone, mikä tarkoittaa sinun d käyttää 24 bittiä arvoja Teknisesti vain toinen napa kaksi tarvitsee laajempaa arvoa, mutta firmware yksinkertaisuus Olen yleensä käyttää samaa edustus, ja siten sama koodi, kaikille pylväät suodattimen. Yleensä minä kirjoita aliohjelma tai makro p: lle Muodosta yksi suodattimen napainen operaatio ja ota se sitten jokaiseen napaan. Oletteko alirutiini tai makro riippuu siitä, ovatko syklit tai ohjelmamuisti tärkeämpiä kyseisessä projektissa. Kummassakin tapauksessa käytän jonkin verran naarmuuntumistilaa ohittamaan UUSI subroutine-makroon, joka päivittää FILT , mutta lataa myös samaan naarmuuntumistilaan UUSI oli tässä Tämä helpottaa useiden napojen käyttämistä, koska päivitetyn FILT on yksi napainen seuraavaksi UUTUU Kun aliohjelmassa on hyödyllistä saada osoitin pisteeseen FILT on tapa, joka päivitetään heti 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 iteroinnilla. Koodimerkit. Tässä on esimerkki makroista, kuten edellä 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, joka on m joka voi olla joko sisäänrakennettu makro-laitteisto. 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?
No comments:
Post a Comment