Jag arbetar med att lära mig Haskell, så jag försökte implementera en glidande genomsnittsfunktion Här är min kod. Där brukar man ringa mAverage med en längd för varje genomsnitt och värdeslistan, t. ex. mAverage 4 1,2 100. Men när jag kör Koden på input mAverage 4 1,2 100000 Jag får att det tar 3 6 sekunder i ghci med set s och använder en gigabyte minne Detta verkar mycket ineffektivt för mig, eftersom motsvarande funktion tar en bråkdel av en sekund i Python Is där något sätt att jag kunde göra min kod effektivare. Skal des 27 16 på 19 59. Ett sätt att göra glidfönstret är att passera i första summan som ett Float-pass i den ursprungliga listan som ska användas för att subtrahera från den nuvarande summa och den ursprungliga listan med k-poster som släpptes för att användas för att lägga till den aktuella summan. Nästa summa är summan som passerat i minus det första elementet i subtraktionslistan plus det första elementet i tilläggslistan Chai T Rex dec 27 16 vid 20 33. Om du vill lära dig något nytt kan du ta en titt på den här fina lösningen f Eller Flyttande medelproblem Det är skrivet av en av mina elever så jag vann inte anspråk på författarskap Jag gillar verkligen det eftersom det är väldigt kort Det enda problemet här är genomsnittsfunktionen Sådana funktioner är kända för att vara dåliga Istället kan du använda Beautiful folds av Gabriel Gonzalez Och ja, den här funktionen tar O k tid där k är storleken på fönstret för att beräkna medelvärdet av fönstret. Jag tycker att det är bättre eftersom du kan möta flytande punktfel om du försöker lägga till bara ett nytt element i fönstret och subtrahera senast Åh, det använder också staten Monad. UPD efter någon kodgranskning Jag märkte att det inte är nödvändigt att använda veck här för att beräkna medelvärdet. Du vet att längden alltid kommer att vara n så att du bara kan ange genomsnittlig funktion i var clause. answered Dec 27 16 vid 23 26.Here sa lösningen för dig. Tanken är att skanna två listor, en där medelfönstret startar och ett annat där det slutar. Att få en svansänd av en lista kostar lika mycket som att skanna den del vi hoppar över och vi kopierar inte någonting om Windows-storlek var vanligtvis ganska stor, vi kunde beräkna resterande data tillsammans med att räkna summan initialdata på en gång. Vi genererar en lista med partiella summor som beskrivs i min kommentar, sedan dela dem genom Windows-bredden för att få medelvärden. När slidingAverage beräknar medelvärden för förspänt positionsfönster bredd till höger, centeredSlidingAverage beräknar centrerade medelvärden, med halvfönster bredd till vänster och till höger. När jag försöker längd glidingAverage 10 1 1000000 tar det mindre än en sekund på min MBP På grund av latiness centreradSlidingAverage tar ungefär samma tid. Svarade dec 27 16 på 22 25. Ditt svar.2017 Stack Exchange, Inc. Moving Average Indicator. Horterlängd glidande medelvärden är känsligare och identifierar nya trender tidigare men ger också mer falska larm. Längre glidande medelvärden är mer tillförlitliga men mindre mottagliga, bara plocka upp de stora trenderna. Använd ett glidande medelvärde som är halva längden på cykeln som du spårar. Om cykelns längd är max 30 dagar, då ett 15 dagars glidande medel är lämpligt Om 20 dagar är ett 10-dagars glidande medel lämpligt. Några handlare kommer emellertid att använda 14 och 9 dagars glidande medelvärden för ovanstående cykler i hopp om att generera signaler något framför marknaden. Andra gynnar Fibonacci nummer 5, 8, 13 och 21.100 till 200 Dag 20 till 40 Veckans glidmedel är populära för längre cykler.20 till 65 Dag 4 till 13 Veckans glidmedel är användbara för mellancykler och.5 till 20 dagar för korta cykler. Det enklaste glidande genomsnittssystemet genererar signaler när priset går över det glidande medlet. Gå länge när priset går över det glidande medlet underifrån. Gå kort när priset korsar till under det glidande genomsnittet ovanifrån. Systemet är benäget för pipsågar på olika marknader, med prisöverföring fram och tillbaka över det glidande medlet, genererar ett stort antal falska signaler Av den anledningen använder glidande medelsystem normalt filter för att minska whipsaws. More sofistikerade system använder mer än en rörlig ave Rasen. Två rörliga medelvärden använder ett snabbare glidande medelvärde som ersättning för slutkurs. Tre rörliga medelvärden använder ett tredje glidande medelvärde för att identifiera när priset är varierande. Flera rörliga medelvärden använder en serie av sex snabbrörande medelvärden och sex långa glidande medelvärden till Bekräfta varandra. Displaced Moving Averages är användbara för trend-följande ändamål, vilket minskar antalet whipsaws. Keltner Channels använder band ritade på ett flertal av genomsnittliga sanna intervall för att filtrera glidande medelvärde. Den populära MACD Moving Average Convergence Divergence-indikatorn är en variation Av de två glidande medelvärdena som ritas som en oscillator som subtraherar det långsamma glidmedlet från det snabbrörande genomsnittet. Cholin Twiggs veckovisa granskning av globala marknader hjälper dig att identifiera marknadsrisken, förbättra din timing. Given att vi återkommer på ett språk utan arrays, Jag antar att du är en språkbörjare. Annars måste ytterligare information redigeras till själva frågan, så som andra användare gör Nt måste scavenge information från kommentarerna jag har inte tid att ge ett komplett svar, men det borde vara möjligt med svansar zipWith och en liten gräns som frikopplar Zeta den 6 november 16 på 10 43. Det genomsnittliga genomsnittet kan beräknas med en måltid Maskin, där det interna tillståndet är tidigare värden. Jag visar ett glidande medelvärde över tre argument, till exempel kan du lura dig själv, till exempel göra det parametriskt i storlek. Maskinen är i grunden ett initialt tillstånd och statlig inmatning till ny tillståndsutgångsfunktion. Låt oss anta att initialtillståndet är alla nollor och skriv en funktion för att flytta genomsnittet över 3. Nu har vi alla bitar, låt oss köra maskinen på ingången. Du kan släppa de första producerade värdena, eftersom maskinens inre tillstånd värmer upp . För en godtycklig medelmässig rörlig genomsnittsmaskin kan du använda det som en mycket bättre datastruktur när du trycker till ena änden, medan du popar från en annan, då en länkad lista. Varför jag pratar om Mealy-maskinen, för att du vid någon tidpunkt kommer troligen springa in i si tuation där du behöver använda vissa strömmande bibliotek i Haskells rörledningar eller maskiner. Då kommer Mealy-maskinens tillvägagångssätt att vara den enda rimliga lösningen. Du kan också göra självreglerade modeller också.
No comments:
Post a Comment