Php Glidande Medelvärde Array


Först använder du 5 på några ställen i ditt program, jag ser ingen motivering för det. Kan det vara så att din förhoppning om användarinmatning leder dig till att placera 5 där numret du verkligen ska använda beror på användarinmatning. Kanske ska du använda fönsterstorleken istället, gissa mig lite här. Därefter, som lppEdd påpekade, läser du inte siffrorna från din inmatning endast fönsterstorleken. Därefter förklarar du din mängd storlek n. Som jag tror var din fönsterstorlek, inte din array storlek. Jag tror att den verkliga lösningen på detta problem använder bättre och mer förklarande variabla namn. Din kod sammanställs inte eftersom du inte har deklarerat arrayen avg som du försöker lagra ditt glidande medelvärde i. För det femte, när du vill ha ditt genomsnitt som en dubbel. Du måste konvertera till dubbla innan du delar upp (det här är en klassisk fallgrop som redan har genererat många frågor om Stack Overflow). Jag hoppas att det här får du ett par steg längre. svarat för 2 dagar sedan Det första du ser är att han använder nextInt (), som bara returnerar ett enda heltal, inte en array. I grund och botten skulle han använda en matris fylld med nollor. ndash LppEdd 2 dagar sedan Ditt svar 2017 Stack Exchange, IncYour inner för är iterating all array så det är därför du alltid får samma medelvärde (en för hela arrayen), du bör iterera från 0 till nuvarande antal av det yttre för istället. Ditt rörliga medelvärde uppdateras baserat på j i ditt inre för att det innebär att det kommer att åsidosätta tidigare värden varje ny slinga, det borde vara inuti det yttre i stället för det inre som använder jag som index. Du delar upp sumj för att beräkna medelvärden, varje ny inre loop du delar med 0 första summan. Jag tror att du menade att du använder j1 istället, indexet är inte detsamma som nuvarande längd. Tips för felsökning: Undvik att använda variabler i loop-arrays, du borde använda array. length istället. För att reproducera din fråga kan du ge oss det isolerade problemet istället för din nuvarande kod. dvs: Tänk om felet är i dina ingångar, hur kan vi tro att du verkligen använde dem svarade 4 okt 13 kl 20:54 Du slår över alla data varje gång. Du borde ha (int j (igång Längd-medellängd2: 0) jlt iaverageLength2 ampamp jltnumDataPoints j) (eller något liknande) för ditt innersta genomsnitt. Dessutom bör movingAverageisumj modifieras för att hantera fallet när j är 0. Speciellt borde det förmodligen vara movingAverageisumverageLength och det ska appliceras på movingAveragei-slitsen utanför medelvärdesslingan. svarat 4 okt 13 kl 20:42 Nästa gång, ta kommentarer om uppdraget ur frågan innan du lägger in det. Men eftersom du verkar ganska ny på det här, tänk på hur du skulle gå igenom data och gör det så. Du bör försöka se till att varje slinga stannar vid rätt punkt och kom ihåg att om du skulle sluta när det inte finns några fler tal (som när du gör innerbandet och du kan bara få 3 fler siffror istället för 4) programmet måste sluta också. Se till att din kod söker efter det här. svarat 4 okt 13 kl 20:56 Utan ytterligare detaljer behöver du nog en obetydlig glidande medelvärde. Vid vilken som helst punkt Ai i ingångsuppsättningen A med längd N (med 0ltiltN), är det helt enkelt medelvärdet av de tidigare K-posterna i matrisen, upp till och inklusive Ai. Om det finns sådana värden, så genomsnittliga (i1) värdena från A0 till Ai. inclusive. En liten tanke kommer att visa dig att du inte behöver lägga till alla K-värden varje gång. Håll bara summan och när du flyttar till nästa punkt (det här är ett glidande medelvärde), dras det värde som ersätts och lägg till det nya värdet som ersätter det. (Under de första K-1-punkterna lägger du helt enkelt till det nya värdet till summan och ökar din räknare med 1.) Vid varje punkt i denna process är det glidande medelvärdet det aktuella summan dividerat med det aktuella räknarvärdet. svarat 4 okt 13 kl 21:05 I ett glidande medelvärde måste du ha någon form av fönsterstorlek. Din fönsterstorlek är genomsnittlig Längd, så det kommer att se ut så här: For loop startar med nuvarande data och går tillbaka med genomsnittlängds datapunkter och lägger till dem. Du kommer bara ha ett glidande medelvärde när du har när du har tillräckligt med datapunkter och medelvärdet blir summan dividerad med medellängden. Obs! Inte testad bara sudokod, men det här är idén. svarat 4 okt 13 kl 21:05 Ditt svar 2017 Stack Exchange, Inctraderema Funktionen traderema () fungerar inte korrekt. det beräknar bara genomsnittet av senaste periodposter. Följ följande kod för traderema: funktion EMACalculator (limit, array) EMApreviousday array0 printr (array) multiplikator1 (2limit1) EMAarray () EMA array0 Stäng array1 medan (limit) echoEMA är EMAn EMA (Close - EMApreviousday) multiplikator1 EMApreviousday EMApreviousday EMA limit - - returnera EMA där gränsen accepterar perioden för ema och array. acceptera array av data för ema-beräkning. Om du vill kontrollera om det bara finns strängar i en array, kan du använda en kombination av arraysum och arraymap så här: funktion onlystringsinarray (arr) return arraysum (arraymap (isstring. arr) ) räkning (arr) arr array (en, två, tre) arr array (foo. bar. array ()) array array (foo. array (), bar) arr4 array (array (), foo. bar) vardump (onlystringsinarray (arr1), onlystringsinarray (arr2), onlystringsinarray (arr3), onlystringsinarray (arr4)) gt Detta ger dig följande resultat: bool (true) bool (false) bool (false) bool (false)

Comments

Popular posts from this blog

Optioner Misstag

Glidande Medelvärde 2

P G Optioner