Skip to main content

Glidande Medelvärde Inbäddad C


Jag försöker hitta ett sätt att beräkna ett rörligt kumulativt medel utan att lagra räkningen och den totala data som hittills har tagits emot. Jag kom fram med två algoritmer men båda måste lagra count. new genomsnittet gamla räkna gamla data nästa data nästa räkning. New genomsnittligt gammalt medelvärde nästa data - gammalt medelvärde nästa count. The problem med dessa metoder är att räkningen blir större och större vilket resulterar i att man förlorar precision i det resulterande genomsnittet. Den första metoden använder det gamla räknet och nästa räkning som uppenbarligen är 1 från varandra Det här fick mig att tänka på att det kanske finns ett sätt att ta bort räkningen, men tyvärr har jag inte hittat det än. Det fick mig lite längre men resulterade i den andra metoden men fortfarande räknas är närvarande. Är det möjligt, eller är jag bara Letar efter det omöjliga. asked den 28 september 12 på 8 46. Det är möjligt att genomföra ett glidande medelvärde i C utan att det behövs ett fönster i prover. Jag har funnit att jag kan optimera lite genom att välja en fönsterstorlek som är en kraft Av två för att tillåta bit-shiftin G istället för att dela men inte behöva en buffert, skulle det vara trevligt Finns det ett sätt att uttrycka ett nytt glidande medelresultat endast som en funktion av det gamla resultatet och det nya provet. Ange ett exempel på glidande medelvärde, över ett fönster med 4 prov till Be. Add nya exempel eA glidande medelvärde kan implementeras rekursivt men för en exakt beräkning av glidande medelvärde måste du komma ihåg det äldsta inmatningsexemplet i summan dvs a i ditt exempel. För ett längd N glidande medelvärde beräknar du. Där yn är utsignalen och xn är ingångssignalen. Eq 1 kan skrivas rekursivt som. Så du behöver alltid komma ihåg provet x nN för att beräkna 2. Som påpekad av Conrad Turner kan du använda ett oändligt långt exponentiellt fönster istället , Som låter dig beräkna utmatningen endast från tidigare utmatning och nuvarande input. but detta är inte ett vanligt obetydligt rörligt medelvärde, men ett exponentiellt vägat glidande medelvärde, där proverna tidigare har en mindre vikt, men åtminstone i teoretiskt Ry dig aldrig glömma någonting, vikterna blir bara mindre och mindre för prover långt tidigare. Jag implementerade ett glidande medelvärde utan individuellt objektminne för ett GPS-spårprogram som jag skrev. Jag börjar med 1 prov och dela med 1 för att få nuvarande avg. Du lägger sedan till ett exempel och delar upp med 2 till den nuvarande avg. This fortsätter tills jag kommer till längden av genomsnittet. Varje gång efteråt lägger jag till i det nya provet, får medelvärdet och tar bort det genomsnittet från summan. Jag är inte en matematiker men det verkade som ett bra sätt att göra det. Jag tänkte att det skulle vända på magen på en riktig matte kille men det visar sig att det är en av de accepterade sätten att göra det. Och det fungerar bra. Kom bara ihåg att Högre längd desto långsammare följer det vad du vill följa Det kan inte ha betydelse för det mesta men när du följer satelliter, kan du vara långsiktig, men spåret kan vara långt ifrån den verkliga positionen och det kommer att se dåligt ut. Du kan ha en lucka Mellan mitten och de efterföljande prickarna valde jag en längd Av 15 uppdaterad 6 gånger per minut för att få tillräcklig utjämning och inte komma för långt från den faktiska lätta positionen med de släta spårpunkterna. Svarade 16 november 16 vid 23 03.initialisera totalt 0, räkna 0 varje gång vi ser ett nytt värde. Då en input scanf, en lägg till totalt nyttValue, ett inkrementstal, en dela genomsnittlig totalräkning. Detta skulle vara ett glidande medelvärde över alla inmatningar. För att beräkna genomsnittet för endast de senaste 4 ingångarna, skulle det behöva 4 inmatningsvariabler, kanske kopiering av varje ingång till en äldre ingångsvariabler, då beräknas det nya glidande medlet som summan av de fyra ingångsvariablerna dividerat med 4 högerskift 2 skulle vara bra om alla ingångar var positiva för att göra den genomsnittliga beräkningen. svarade 3 februari kl. 15 06. Det kommer faktiskt att beräkna Totalt genomsnitt och INTE det rörliga genomsnittet När räkningen blir större påverkas effekten av något nytt ingångsprov liten Hilmar 3 februari kl 13:53. Ditt svar.2017 Stack Exchange, Inc. Jag vet att detta kan uppnås med boost per men. Men jag Vill verkligen t O Undvik att använda boost Jag har googled och inte hittat några lämpliga eller läsbara exempel. I grund och botten vill jag spåra det rörliga genomsnittet av en pågående ström av en ström av flytande punktnummer med de senaste 1000 siffrorna som ett dataprov. Vad är det enklaste Sätt att uppnå detta. Jag experimenterade med att använda en cirkulär array, exponentiell glidande medelvärde och ett enklare glidande medelvärde och fann att resultaten från den cirkulära gruppen passade mina behov best. asked 12 juni 12 på 4 38. Om dina behov är enkla, Du kan bara försöka använda ett exponentiellt rörligt medelvärde. Du gör bara en ackumulatorvariabel, och när din kod tittar på varje prov uppdaterar koden ackumulatorn med det nya värdet. Du väljer en konstant alfa som ligger mellan 0 och 1 och Beräkna detta. Du behöver bara hitta ett värde av alfa där effekten av ett givet prov endast varar för cirka 1000 prover. Hmm, jag är inte säker på att det passar dig, nu när jag har lagt den här Problemet är att 1000 är ett ganska långt fönster För ett exponentiellt rörligt medelvärde Jag är inte säker på att det finns en alfa som skulle sprida genomsnittet över de senaste 1000 siffrorna utan underflöde i flytpunktsberäkningen Men om du ville ha ett mindre medelvärde, som 30 nummer eller så, är detta väldigt lätt Och snabbt sätt att göra det. Svarade den 12 juni 12 på 4 44. 1 på ditt inlägg Det exponentiella glidande medlet kan låta alfabetet vara variabelt Så här gör det att det kan användas för att beräkna tidsbasen medelvärden, t. ex. byte per sekund Om tiden sedan Senaste ackumulatorns uppdatering är mer än 1 sekund, du låter alpha vara 1 0 Annars kan du låta alfa vara usecs sedan senaste uppdateringen 1000000 jxh jun 12 12 på 6 21. Basiskt vill jag spåra det rörliga genomsnittet av en pågående ström av en ström Av flytande punktnummer med de senaste 1000 siffrorna som ett dataprov. Notera att nedanstående uppdateringar summan som element som tillsatt ersatt, undviker dyrt ON-traversal för att beräkna summan som behövs för genomsnittet på begäran. Totalt görs en annan parameter från T till s Upport, t. ex. med lång längd när det är 1000 lång s, ett int för char s eller en dubbel till totalt float s. Detta är lite fel i att numsamples kan gå förbi INTMAX - om du bryr dig att du kan använda en osignerad lång lång eller Använd en extra bool data medlem för att spela in när behållaren fylls först medan cykel nummor runt arrayen bäst sedan bytt namn på något harmlöst som pos. answered 12/12 12 vid 5 19.one antar att tomrumsoperatör T provet är faktiskt tomt operatör T prov oPless Jun 8 14 på 11 52. oPless ahhh väl spotted egentligen menade jag att det skulle vara tomt operatör T-prov men självklart kan du använda vilken anteckning du gillade kommer att fixa, tack Tony D Jun 8 14 vid 14 27.

Comments

Popular posts from this blog

Optioner Ucb

Kompensation och förmåner. UCB erbjuder ett generöst löne - och förmånsprogram för att attrahera och behålla anställda av högsta kvalitet och se till att medarbetarna motiveras för att bidra till företagets framgång. Vår policy är att erkänna och belöna högprestanda samtidigt som man säkerställer rättvisa och konsekventa . Arbetstagare får en konkurrenskraftig grundlön som årligen granskas och en individuell bonus som ger upphov till uppnåelse av personliga mål och företagsmål för berättigade anställda. Dessutom erkänner vårt erkännandeprogram enastående eller exceptionella individuella och teamprestationer som gjorts under året. bolagets långsiktiga framgång genom att tilldela aktieoptioner till berättigade anställda och möjligheten för alla anställda att bli aktieägare genom vår brittiska aktieincitamentsplan. Detta ger en matchande andel för varje fem köpt. SMB ger ett antal grundläggande fördelar, kompletterat med ett system för flexibla förmåner som möjliggör anställda att skrädda...