Friday 4 August 2017

Glidande Medelvärde Filter Kod I C


Är det möjligt att implementera ett glidande medelvärde i C utan att det behövs ett fönster av 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 bitskiftning istället för att dela men Inte behöva en buffert skulle 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 rörande medelvärde, över ett fönster på 4 prover att vara. Lägg till nytt prov 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 inmatningsprovet 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 exponentialfönster istället, vilket gör att du kan beräkna Utgången endast från det förflutna ut Put och nuvarande input. but detta är inte ett vanligt obetydligt glidande medelvärde, men ett exponentiellt vägat glidande medelvärde, där prov i det förflutna får en mindre vikt, men åtminstone teoretiskt glömmer du aldrig någonting, vikterna blir bara mindre och mindre för Prover långt ifrån. Jag genomförde ett glidande medelvärde utan individuellt objektminne för ett GPS-spårningsprogram som jag skrev. Jag börjar med 1 prov och dela med 1 för att få nuvarande avg. I lägger sedan till ett exempel och delar upp med 2 till Nuvarande avg. This fortsätter tills jag når längden på 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 matematiker men det verkade som ett bra sätt att Gör det jag trodde det skulle vända på en riktig matte kille, men det visar sig att det är ett av de accepterade sätten att göra det Och det fungerar bra Kom ihåg att ju högre längden desto långsammare följer det du vill följa Det kan inte ha betydelse för det mesta Tiden, men när du följer satelliter, kan du vara långsiktig om du är långsam, och det kommer att se dåligt ut. Du kan ha ett mellanrum mellan mitten och de efterföljande punkterna jag valde en längd på 15 uppdaterade 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 inmatningsscannf, lägger man till totalt nyttValue, Ett inkrementstal, en dela upp genomsnittlig totalräkning. Detta skulle vara ett glidande medelvärde för alla inmatningar. För att beräkna medelvärdet över endast de senaste 4 ingångarna, skulle det behöva 4 ingångsvariabler, kanske kopiering av varje ingång till en äldre ingångsvariabel och sedan beräkning av den nya rörelsen Genomsnittet 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 det totala genomsnittet och INTE det glidande medlet som Räkna få S större påverkan av något nytt ingångsprov blir vanishingly liten Hilmar Feb 3 15 på 13 53. Ditt svar.2017 Stack Exchange, Inc. Jag vet att detta kan uppnås med boost som per. Men jag vill verkligen undvika att använda boost jag har Googled och inte hitta några lämpliga eller läsbara exempel. 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 numren som ett dataprov. Vilket är det enklaste sättet att uppnå detta. Experimenterade med att använda ett cirkulärt array, exponentiellt glidande medelvärde och ett enklare glidande medelvärde och fann att resultaten från den cirkulära gruppen passade mina behov bäst. Skakad 12/12 12 på 4 38. Om dina behov är enkla kan du bara försöka använda en Exponentiell glidande medelvärde. Du gör helt enkelt 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 är mellan 0 och 1 och beräknar detta. Du behöver bara Att hitta ett värde av a Lpha där effekten av ett givet prov endast varar för cirka 1000 prov. Hmm, jag är inte säker på att det här är lämpligt för 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 det här ett mycket enkelt och snabbt sätt att göra It. answered 12 juni 12 på 4 44. 1 på ditt inlägg Det exponentiella glidande medlet kan tillåta alfabet att 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 den senaste ackumulatorns uppdatering är mer Än 1 sekund, låter du 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 med flytande punktnummer med hjälp av De senaste 1000 siffrorna som ett dataprov E att nedanstående uppdaterar summan som element som tillsatt ersatt, för att undvika kostsam ON-traversering för att beräkna summan som behövs för genomsnittet - på begäran. Totala görs en annan parameter från T för att stödja t ex med en lång längd när det sammanlagda 1000 lång s , En int för char s eller en dubbel till total float s. Det här är lite fel i att numsamples kan gå förbi INTMAX - om du bryr dig att du kan använda en unsigned long long eller använda en extra bool data medlem att spela in när behållaren Fylls först medan cykeltalsprover runt arrayen bäst omdöpas till något oskyldigt som pos. answered 12/12 12 på 5 19.one antar att tomrumsoperatör T-provet är faktiskt tomt operatör T-prov oPless 8 juni 14 vid 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 vill, kommer att fixa, tack Tony D Jun 8 14 på 14 27. Som andra har nämnt bör du överväga ett IIR-oändligt impulsresponsfilter i stället för FIR ändliga i Mpulse-responsfilter du använder nu Det finns mer till det, men vid första anblicken implementeras FIR-filter som uttryckliga omvälvningar och IIR-filter med ekvationer. Det speciella IIR-filtret som jag använder mycket i mikrokontroller är ett enkeltpoligt lågpassfilter. Detta är Digital motsvarighet till ett enkelt RC-analogfilter För de flesta applikationer kommer dessa att ha bättre egenskaper än det boxfilter som du använder De flesta användningarna av ett lådfilter som jag har stött på är resultatet av att någon inte uppmärksammar sig i den digitala signalbehandlingsklassen, inte Som en följd av att de behöver sina specifika egenskaper Om du bara vill dämpa högfrekvenser som du vet är buller, är ett enkelspårigt lågpassfilter bättre. Det bästa sättet att implementera en digitalt i en mikrokontroller är vanligtvis. FILT - FILT FF NEW - FILT. FILT är en del av kvarstående tillstånd Detta är den enda beständiga variabeln du behöver beräkna det här filtret NYTT är det nya värdet som filtret uppdateras med denna iteration FF är filterfraktionen som justerar filterets tyngd. Se på denna algoritm och se till att för FF 0 är filtret oändligt tungt eftersom utmatningen aldrig ändras. För FF 1 är det verkligen inget filter alls eftersom utmatningen bara följer ingången Användbara värden är emellan På små system väljer du FF att vara 1 2 N så att multiplikationen med FF kan utföras som en rättväxling med N-bitar. Exempelvis kan FF vara 1 16 och multiplicera med FF därför ett rätt skift av 4 bitar annars behöver det här filtret bara en subtrahera och en tillägg, även om siffrorna vanligtvis behöver vara bredare än ingångsvärdet mer på numerisk precision i ett separat avsnitt nedan. Jag brukar ta AD-avläsningar betydligt snabbare än de behövs och tillämpa två av Dessa filter kaskad Det här är den digitala ekvivalenten av två RC-filter i serie och dämpas med 12 dB oktav ovanför rullningsfrekvensen. För AD-avläsningar är det vanligtvis mer relevant att titta på filtret i tidsdomänen med hänsyn till Beräkna sitt stegsvar Detta berättar hur snabbt ditt system kommer att se en förändring när det du mäter ändringar. För att underlätta utformningen av dessa filter, vilket bara betyder att du väljer FF och bestämmer hur många av dem som ska kaskad, använder jag mitt program FILTBITS Du anger Antal skiftbitar för varje FF i kaskad serie av filter, och det beräknar stegsvaret och andra värden. I själva verket kör jag vanligtvis det här via mitt omslagskript PLOTFILT Detta kör FILTBITS, vilket gör en CSV-fil, och plottar sedan CSV-filen. Till exempel , Här är resultatet av PLOTFILT 4 4. De två parametrarna till PLOTFILT betyder att det kommer att finnas två filter som är kaskadade av den ovan beskrivna typen. Värdena 4 anger antalet växlingsbitar för att inse multipliceringen med FF De två FF-värdena är därför 1 16 i det här fallet. Det röda spåret är enhetens stegsvar och är det viktigaste att titta på. Detta berättar till exempel att om ingången ändras omedelbart, kommer utmatningen från det kombinerade filtret att lösa sig till 90 av det nya Värde i 60 iterationer Om du bryr dig om 95 avvecklingstid måste du vänta på 73 iterationer och för 50 avvecklingstid bara 26 iterationer. Det gröna spåret visar dig utmatningen från en enda fullamplitudspik Detta ger dig en uppfattning om slumpmässigt Bullerundertryck Det verkar som om inget enda prov kommer att orsaka mer än en 2 5 förändring i utmatningen. Det blå spåret är att ge en subjektiv känsla av vad det här filtret gör med vitt brus Detta är inte ett strikt test eftersom det inte finns någon garanti för vad exakt Innehållet var av de slumpmässiga siffrorna plockade som det vita brusetånget för denna körning av PLOTFILT Det är bara för att ge dig en grov känsla av hur mycket det kommer att squashed och hur smidigt det är. PLOTFILT, kanske FILTBITS, och massor av andra användbara Saker, speciellt för PIC-programvaruutveckling finns i programvarulicens för PIC Development Tools på min nedladdnings sida för nedladdningar. Lägg till om numerisk precision. Jag ser från kommentarerna och nu ett nytt svar att det finns intresse att diskutera t Han antal bitar som behövs för att implementera detta filter Observera att multipliceringen med FF kommer att skapa logg 2 FF nya bitar under binärpunkten På små system är FF vanligen valt att vara 1 2 N så att denna multiplicering faktiskt realiseras med ett rätt skift Av N bitar. FILT är därför vanligtvis ett fastpunkts heltal Observera att detta inte ändrar någon av matematiken från processorns synvinkel. Om du t. ex. filtrerar 10 bitars AD-avläsningar och N 4 FF 1 16 behöver du 4 fraktion bitar under 10 bitars heltal AD-läsningar En av de flesta processorer gör att du gör 16 bitars heltalstransaktioner på grund av 10-bitars AD-avläsningar. I det här fallet kan du fortfarande göra exakt samma 16 bitars integeroperationer, men börja med AD Avläsningar vänster förskjutna med 4 bitar Processorn känner inte till skillnaden och behöver inte göra Matematiken på hela 16 bitars heltal fungerar om du anser att de är 12 4 fast punkt eller sann 16 bitars heltal 16 0 fixpunkt. Du måste lägga till N bitar varje filterpole om du Vill inte lägga till ljud på grund av den numeriska representationen I exemplet ovan måste det andra filtret av två behöva ha 10 4 4 18 bitar för att inte förlora information I praktiken på en 8-bitars maskin betyder det att du använder 24 bitars värden Tekniskt Bara den andra polen på två skulle behöva det bredare värdet, men för enkelhetsgraden för firmware brukar jag använda samma representation och därigenom samma kod för alla poler i ett filter. Normalt skriver jag en subrutin eller ett makro för att utföra en filterpoleoperation, Applicera sedan det på varje pol Om en subrutin eller ett makro beror på huruvida cykler eller programminne är viktigare för det specifika projektet. I vilket fall som helst använder jag en del repetillstånd för att överföra NEW till subrutinen, vilket uppdaterar FILT, men laddar också in Samma repetillstånd NYHET var i Det här gör det enkelt att tillämpa flera poler eftersom den uppdaterade FILT-en av en pol är NEW of the next One När en subrutin är det användbart att peka på FILT på vägen in, vilket är uppdaterad Att strax efter FILT på vägen ut På så sätt fungerar subrutinen automatiskt i efterföljande filter i minnet om det kallas flera gånger Med ett makro behöver du inte en pekare eftersom du skickar in adressen för att fungera på varje iteration. Exempel på exempel. Här är en Exempel på ett makro som beskrivits ovan för en PIC 18. Och här är ett liknande makro för en PIC 24 eller dsPIC 30 eller 33.But dessa exempel implementeras som makron med min PIC assembler preprocessor som är mer kapabel än någon av de inbyggda I makroanläggningar. Clabacchio Ett annat problem som jag borde ha nämnt är implementering av fast programvara. Du kan skriva en enkelpolig lågpassfilter subrutin en gång och sedan applicera den flera gånger. Faktum är att jag vanligtvis skriver en sådan subrutin för att peka i minnet till filtertillståndet, sedan ha det på förhand Pekaren så att den kan kallas i följd lätt för att realisera flera poliga filter Olin Lathrop Apr 20 12 på 15 03.1 Tack så mycket för dina svar - alla bestämde jag för att använda det här IIR-filtret, men det här filtret används inte som Ett Standard LowPass-filter eftersom jag behöver genomsnittliga motvärden och jämför dem för att upptäcka ändringar i en viss räckvidd eftersom dessa värden ska ha mycket olika dimensioner beroende på maskinvaran jag ville ta ett genomsnitt för att kunna reagera på dessa hårdvaror Specifika ändringar automatiskt senselen 21 maj 12 på 12 06. Om du kan leva med begränsningen av en kraft av två antal objekt i genomsnitt dvs 2,4,8,16,32 etc kan delningen enkelt och effektivt ske på en Lågpresterande mikro med ingen dedikerad delning eftersom det kan ske som en bitskift. Varje växlingsrätt är en kraft av två. OP-enheten trodde att han hade två problem, delade i en PIC16 och minne för hans ringbuffert. Detta svar visar att delningen Det är inte svårt Visserligen behandlar det inte minnesproblemet, men SE-systemet tillåter partiella svar, och användare kan ta något från varje svar för sig själva, eller till och med redigera och kombinera andra s-svar. Eftersom några av de andra svaren kräver en delningsoperation, Är likaledes ofullständiga eftersom de inte visar hur man effektivt kan uppnå detta på en PIC16 Martin 20 april 12 på 13 01. Det finns ett svar på ett riktigt glidande medelfilter aka boxcar filter med mindre minne krav, om du inte har något att tänka på. Kallas ett kaskadintegrator-comb filter CIC Tanken är att du har en integrator som du tar skillnader över en tidsperiod, och den viktigaste minnesbesparande enheten är att genom downsampling behöver du inte lagra eve Ry-värdet på integratorn Det kan implementeras med följande pseudokod. Din effektiva glidande medellängd är decimationFactor stateize men du behöver bara behålla statusprover självklart. Du kan självklart få bättre prestanda om din stateize och decimationFactor är krafter på 2, så att Division och återstående operatörer ersättas av skift och mask-ands. Postscript Jag håller med Olin om att du alltid bör överväga enkla IIR-filter före ett glidande medelfilter Om du inte behöver frekvens-nollarna hos ett boxcarfilter, en 1-polig Eller 2-poligt lågpassfilter kommer antagligen att fungera bra. Om du filtrerar i syfte att decimera med en högprovsränta-inmatning och medelvärdet för att använda den med en lågprocess, då ett CIC-filter Kan vara precis vad du letar efter speciellt om du kan använda stateize 1 och undvika ringbufferten helt och hållet med bara ett enda tidigare integratorvärde. Det finns en djupgående analys av matematiken bakom användandet av de första orden Er IIR-filter som Olin Lathrop redan har beskrivit över på Digital Signal Processing-stackutbytet innehåller massor av vackra bilder. Ekvationen för detta IIR-filter är. Detta kan implementeras med bara heltal och ingen delning med följande kod kan behöva lite felsökning som jag Skrivte från minnet. Detta filter approximerar ett glidande medelvärde av de sista K-proven genom att ställa in värdet av alfa till 1 K Gör det här i föregående kod genom att definiera BITS till LOG2 K, dvs för K 16 set BITS till 4, för K 4 ställa in BITS till 2, etc. Jag ska verifiera koden som anges här så snart jag får en ändring och redigera det här svaret om det behövs. ansvarat den 23 juni kl 04 04. Här är ett poligt lågpassfilter glidande medelvärde med Cutoff frekvens CutoffFrequency Mycket enkel, mycket snabb, fungerar bra och nästan inget minne överhead. Notera Alla variabler har räckvidd bortom filterfunktionen, utom det som passerade i newInput. Note Detta är ett enstegsfilter Flera steg kan kaskadas tillsammans för att öka Skärpa av Filtret Om du använder mer än ett steg måste du justera DecayFactor som relaterar till Cutoff-Frequency för att kompensera. Och självklart allt du behöver är de två linjerna placerade någonstans, de behöver inte egen funktion. Detta filter har en Uppstartstid innan det rörliga genomsnittsvärdet representerar ingångssignalens längd. Om du behöver kringgå denna uppskjutningstid kan du bara initiera MovingAverage till det första värdet av newInput istället för 0, och hoppas att den första nyaInputen inte är en outlier. CutoffFrequency SampleRate har ett intervall mellan 0 och 0 5 DecayFactor är ett värde mellan 0 och 1, vanligen nära 1.Single-precision floats är bra nog för de flesta saker, jag föredrar bara dubblar Om du behöver hålla fast med heltal kan du Omvandla DecayFactor och Amplitude Factor till fraktionella heltal, där täljaren lagras som heltalet och nämnaren är ett heltalseffekt på 2 så att du kan byta till höger som nämnaren i stället för att behöva delas under filterslingan För Exempel om DecayFactor 0 99, och du vill använda heltal, kan du ställa DecayFactor 0 99 65536 64881 och sedan när du multiplicerar med DecayFactor i din filterslinga, skiftar du bara resultatet 16. För mer information om detta, en utmärkt bok som S online, kapitel 19 om rekursiva filter. PS För det Moving Average-paradigmet, kan ett annat sätt att ställa in DecayFactor och AmplitudeFactor som kan vara mer relevant för dina behov, låt oss säga att du vill ha föregående, ca 6 poster i genomsnitt tog Eter, gör det diskret, du lägger till 6 föremål och delas med 6, så du kan ställa in AmplitudeFactor till 1 6 och DecayFactor till 1 0 - AmplitudeFactor. answered 14 maj 12 på 22 55. Alla andra har kommenterat noggrant på verktyget Av IIR vs FIR, och på power-of-two-division Jag vill bara ge några detaljer om genomförandet Nedan fungerar det bra på små mikrokontroller utan FPU Det finns ingen multiplicering, och om du håller N en kraft av två delar hela divisionen Är encyklisk bitskiftning. Baskisk FIR-ringspuffbuffert håller en löpbuffert med de sista N-värdena och ett löpande SUM av alla värden i bufferten Varje gång ett nytt prov kommer in, subtrahera det äldsta värdet i bufferten från SUM , Ersätt det med det nya provet, lägg till det nya provet till SUM och mata ut SUM N. Modified IIR-ringbufferten, fortsätt SUM av de sista N-värdena Varje gång ett nytt prov kommer in, SUM - SUM N, lägg till det nya Prov och output SUM N. answered 28 aug 13 på 13 45. Om jag läser dig rätt beskriver du en första order IIR filtrera värdet du subtraherar är inte det äldsta värdet som faller ut, men istället är det genomsnittet av tidigare värden Första ordningens IIR-filter kan säkert vara användbart men jag är inte säker på vad du menar när du föreslår att utgången Är samma för alla periodiska signaler Vid en 10 kHz samplingsfrekvens kommer matningen av en 100 Hz kvadratvåg i ett 20-stegs filter att ge en signal som stiger jämnt för 20 prover, sitter högt för 30, sjunker jämnt för 20 prover och sitter lågt För 30 En första ordning IIR filter supercat aug 28 13 vid 15 31. kommer att ge en våg som kraftigt börjar stiga och gradvis nivåer nära men inte vid ingångens maximala nivå, börjar sedan kraftigt falla och gradvis nivåer av nära men inte vid ingången Minimum Mycket olika beteende supercat Aug 28 13 på 15 32. Ett problem är att ett enkelt glidande medel kan eller inte kan vara användbart Med ett IIR-filter kan du få ett fint filter med relativt få beräkningar. Den FIR du beskriver kan bara ge dig en Rektangel i tid - en sync i Freq - och du kan inte hantera sidloberna Det kan vara väl värt att kasta in ett fåtal heltal multipliceras för att göra det till en fin symmetrisk inställbar FIR om du kan spara klockan ticks Scott Seidman Aug 29 13 på 13 50. ScottSeidman Nej Behovet av multipliceringar om man helt enkelt har varje steg i FIR-enheten matar antingen genomsnittsvärdet av inmatningen till det aktuella läget och dess tidigare lagrade värde och lagrar sedan inmatningen om man har numeriskt område, man kan använda summan snarare än genomsnittet Oavsett om det S bättre än ett lådfilter beror på applikationen stegresponsen hos ett lådfilter med en total fördröjning på 1ms, till exempel, kommer att ha en otäck d2 dt spik när ingången ändras och igen 1ms senare men kommer att ha det minsta möjliga D dt för ett filter med totalt 1 ms fördröjning supercat aug 29 13 vid 15 25. Om mikeselektronik sagt, om du verkligen behöver minska dina minnesbehov och du tänker inte på att ditt impulsrespons är en exponentiell istället för en rektangulär puls, jag Skulle gå för en exponentiell rörlig ave Raser filter Jag använder dem i stor utsträckning Med den typen av filter behöver du inte någon buffert. Du behöver inte lagra N tidigare prover. Bara en Så, dina minneskrav skärs med en faktor N. Även du behöver inte någon Division för det Endast multiplikationer Om du har tillgång till flytande punkträkning, använd flytande punktmultiplikationer Annars gör vi multipelantal och ändringar till höger Vi är dock 2012 och jag rekommenderar dig att använda kompilatorer och MCU-enheter som tillåter dig För att arbeta med flytande punkter. Förutom att vara mer minneseffektivt och snabbare behöver du inte uppdatera objekt i någon cirkulär buffert. Jag skulle säga att det också är mer naturligt eftersom ett exponentiellt impulsrespons matchar bättre hur naturen beter sig, i de flesta fall. ansvarad 20 april 12 på 9 59. Ett problem med IIR-filtret som nästan berört av olin och supercat men tydligen ignoreras av andra är att avrundningen introducerar en viss oriktighet och eventuellt bias trunkering förutsatt att N i En kraft av två och enbart heltalsräkning används, växeln höger eliminerar systematiskt LSB: erna i det nya provet. Det betyder att hur länge serien någonsin kan vara, kommer genomsnittsvärdet aldrig att ta hänsyn till dem. För exempel, anta en långsam Minskande serie 8,8,8 8,7,7,7 7,6,6 och antar att medlet är faktiskt 8 i början Fist 7-provet kommer att ge medlet till 7, oavsett filterstyrkan Bara för ett prov Samma Berättar för 6, osv. Tänk på motsatsen går serien upp. Medelvärdet kommer att förbli på 7 för alltid tills provet är stort nog för att få det att ändras. Naturligtvis kan du korrigera för bias genom att lägga till 1 2 N 2, men Som vann inte verkligen lösa precisionsproblemet i så fall kommer den avtagande serien att stanna för alltid vid 8 tills provet är 8-1 2 N 2 För N 4 till exempel, kommer något prov över noll att hålla medeltalet oförändrat. Jag tror en lösning för Det skulle innebära att man höll en ackumulator av de förlorade LSB: erna men jag gjorde inte det tillräckligt långt för att få kod redo, Och jag är inte säker på att det inte skulle skada IIR-strömmen i några andra fall av serier, till exempel om 7,9,7,9 skulle vara genomsnittliga till 8 då. Olin, din tvåstegskaskad skulle också behöva någon förklaring. Menar du att du håller två genomsnittsvärden med resultatet av den första matas in i den andra i varje iteration Vad är fördelen med detta.

No comments:

Post a Comment