Tuesday, 19 December 2017

How to do glidande medelvärde in matlab


Skapad onsdagen den 08 oktober 2008 20:04 Senast uppdaterad den 14 mars 2013 01:29 Skriven av Batuhan Osmanoglu Hits: 41489 Flyttande medelvärde I Matlab Ofta befinner jag mig själv i att behöva medelvärda data som jag måste minska bullret lite bit. Jag skrev några funktioner för att göra exakt vad jag vill, men matlabs inbyggda filterfunktion fungerar ganska bra också. Här skriver jag om 1D och 2D-medelvärde för data. 1D-filter kan realiseras med hjälp av filterfunktionen. Filterfunktionen kräver minst tre ingångsparametrar: täljarkoefficienten för filtret (b), nämnarkoefficienten för filtret (a) och data (X) förstås. Ett löpande medelfilter kan definieras enkelt genom: För 2D-data kan vi använda Matlabs filter2-funktionen. För mer information om hur filtret fungerar kan du skriva: Här är en snabb och smutsig implementering av ett 16 med 16 glidande medelfilter. Först måste vi definiera filtret. Eftersom allt vi vill ha är lika stort bidrag från alla grannar kan vi bara använda dem. Vi dela allt med 256 (1616) eftersom vi inte vill ändra signalens generella nivå (amplitud). För att applicera filtret kan vi helt enkelt säga följande Nedan är resultaten för fas av ett SAR-interferogram. I detta fall är området i Y-axeln och Azimuth är mappad på X-axeln. Filtret var 4 pixlar brett i Räckvidd och 16 pixlar bred i Azimuth.29 september 2013 Flyttande medelvärde genom convolution Vad rör sig i genomsnitt och vad är det bra för Hur flyttas medelvärdet genom att använda convolution Flyttmedelvärdet är en enkel operation som vanligtvis används för att undertrycka ljudet av en signal: vi ställer värdet på varje punkt till genomsnittet av värdena i dess grannskap. Med en formel: Här är x ingången och y är utsignalen, medan storleken på fönstret är w, skulle vara udda. Formeln ovan beskriver en symmetrisk operation: proven tas från båda sidor av den aktuella punkten. Nedan är ett verkligt exempel. Den punkt som fönstret ligger faktiskt är rött. Värden utanför x är tänkt att vara nollor: Att leka och se effekterna av glidande medelvärde, ta en titt på denna interaktiva demonstration. Hur man gör det genom konvoltering Som du kanske har insett är det att det enkla glidande medlet liknar konvolutionen: i båda fallen glider ett fönster längs signalen och elementen i fönstret sammanfattas. Så försök att göra samma sak genom att använda convolution. Använd följande parametrar: Den önskade utgången är: Som första tillvägagångssätt, låt oss försöka vad vi får genom att samla x-signalen med följande k-kärna: Utsignalen är exakt tre gånger större än den förväntade. Det kan också ses att utgångsvärdena är sammanfattningen av de tre elementen i fönstret. Det beror på att under fönstret glider fönstret, alla element i det multipliceras med en och sedan sammanfattas: yk 1 cdot x 1 cdot x 1 cdot x För att få önskade värden på y. utgången ska delas med 3: Med en formel inklusive divisionen: Men skulle det inte vara optimalt att göra uppdelningen under konvoltering Här kommer tanken genom att omordna ekvationen: Så vi ska använda följande k-kärna: På så sätt kommer vi att få önskad produktion: Generellt: om vi vill göra glidande medelvärde genom convolution som har en fönsterstorlek på w. vi ska använda följande k-kärna: En enkel funktion som gör det rörliga genomsnittet är: Ett exempel är: Jag måste beräkna ett glidande medelvärde över en dataserie, inom en för loop. Jag måste få det glidande genomsnittet över N9 dagar. Array Im computing in är 4 serier av 365 värden (M), som i sig är medelvärden för en annan uppsättning data. Jag vill räkna ut medelvärdena för mina data med glidande medelvärde i en plot. Jag googled lite om glidande medelvärden och conv kommandot och hittade något som jag försökte implementera i min kod .: Så i princip beräknar jag mitt medelvärde och plottar det med ett (fel) glidande medelvärde. Jag valde wts-värdet direkt utanför mathworks webbplats, så det är felaktigt. (källa: mathworks. nlhelpeconmoving-average-trend-estimation. html) Mitt problem är dock att jag inte förstår vad det här är. Kan någon förklara om det har något att göra med värdena på värdena: det är ogiltigt i det här fallet. Alla värden är viktade samma. Och om jag gör det här helt fel, kan jag få lite hjälp med det mitt uppriktiga tack. frågade 23 sep 14 kl 19:05 Använda conv är ett utmärkt sätt att genomföra ett glidande medelvärde. I koden du använder är wts hur mycket du väger varje värde (som du gissade). Summan av den vektorn ska alltid vara lika med en. Om du vill vikta varje värde jämnt och göra ett N-rörligt filter så vill du göra Att använda det giltiga argumentet i conv resulterar i att få färre värden i Ms än du har i M. Använd samma om du inte har något emot effekterna av noll padding. Om du har signalbehandlingsverktygslådan kan du använda cconv om du vill prova ett cirkulärt glidande medelvärde. Något som du borde läsa conv and cconv dokumentationen för mer information om du inte har redan. Flyttande medelvärdet Hi Miquel med kontrollparametern, alfa, inställd på noll. Dina rörliga medelvärden beräknas genom att samla in din ingångssignal (serie) med två ändliga impulsresponsfiltrar med längd N med filterkoefficienter 1N. Så samtalet: movavg (serie, 3,10,0) kommer att filtrera data i serie med två filter, en kommer att vara av längd 3 och ha filterkoefficienter filt113 13 13 3 koefficienter Den andra har längd 10 och har filterkoefficienter filt2110 110 110 110 110 110 110 110 110 110 10 koefficienter Du filtrerar sedan dina inmatningsdata med dessa FIR-filter. seriesrandn (100,1) skapa några slumpmässiga data outputfilt1filter (filt1,1, serie) filtrera några slumpmässiga data outputfilt2filter (filt2,1, serie) Om du nu plottar den data ser du att båda filtrerade versionerna är mjukare än ingångsdata , men att outputfilt2 är mjukare än outputfilt1 eftersom du har använt ett längre glidande medelfilter. Jag tror inte att du vill att din ledningsinmatningsvariabel ska vara 1, för att det inte ger dig något. Jag är inte en ekonomisk person, men en tillämpning av att använda dessa glidande medelvärden av olika längder är att jämföra den faktiska dataen mot de glidande medlen av olika längd (en kort eller ledande och en längre eller försvagad) och se var den aktuella marknadsdata faller i förhållande till de olika glidande medelvärdena. Detta används för att göra slutsatser om tidsseriernas allmänna riktning (marknad). Byte av kontrollparametern ger dig viktade glidmedel eller exponentiella. Hoppas det hjälper, Wayne Miguel Moura ltmdNOSPAMmouragmREMOVEailgt skrev i meddelande ltguahs5lgk1fred. mathworksgt. gt Hej, gt gt Jag behöver beräkna ett enkelt rörligt medelvärde med period 10. gt Hur kan jag göra detta i Matlab gt gt Jag använder movavg (serie, 1,20,0) men jag är inte säker på om detta är korrekt. gt gt Vad ska jag använda för bly och lag gt gt Tack, gt Miguel Wayne King ltwmkingtygmailgt skrev i meddelande ltgubl6qp821fred. mathworksgt. gt Hej Miquel med kontrollparametern, alfa, inställd på noll. Dina rörliga medelvärden beräknas genom att samla in din ingångssignal (serie) med två ändliga impulsresponsfiltrar med längd N med filterkoefficienter 1N. Så samtalet: gt movavg (serie, 3,10,0) gt filtrerar data i serie med två filter, en kommer att vara av längd 3 och ha filterkoefficienter gt gt filt113 13 13 3 koefficienter gt Den andra kommer att ha längd 10 och har filterkoefficienter gt filt2110 110 110 110 110 110 110 110 110 110 10 koefficienter gt gt Du filtrerar sedan dina inmatningsdata med dessa FIR-filter. gt gtrandrandn (100,1) skapa några slumpmässiga data gt outputfilt1filter (filt1,1, serie) filtrera några slumpmässiga data gt outputfilt2filter (filt2,1, serie) gt gt Om du nu plottar den data ser du att båda filtrerade versionerna är mjukare än ingångsdata, men att outputfilt2 är mjukare än outputfilt1 eftersom du har använt ett längre glidande medelfilter. Jag tror inte att du vill att din ledningsinmatningsvariabel ska vara 1, för att det inte ger dig något. Jag är inte en ekonomisk person, men en tillämpning av att använda dessa glidande medelvärden av olika längder är att jämföra den faktiska dataen mot de glidande medlen av olika längd (en kort eller ledande och en längre eller försvagad) och se var den aktuella marknadsdata faller i förhållande till de olika glidande medelvärdena. Detta används för att göra slutsatser om tidsseriernas allmänna riktning (marknad). Byte av kontrollparametern ger dig viktade glidmedel eller exponentiella. gt Hope som hjälper till med gt gt gt gt gt gt gt gt gt gt Miguel Moura ltmdNOSPAMmouragmREMOVEailgt skrev i meddelande ltguahs5lgk1fred. mathworksgt. gt gt Hello, gt gt gt gt Jag behöver beräkna ett enkelt rörligt medelvärde med period 10. gt gt Hur kan jag göra detta i Matlab gt gt gt gt jag använder movavg (serier, 1,20,0) men jag är inte säker på om detta är korrekt. gt gt gt gt Vad ska jag använda för bly och lag gt gt gt gt Tack, gt gt Mig gt Jag behöver använda Simple Moving Average i sin normala form eftersom jag skapade ett C NET-bibliotek för att göra det. Och jag använder detta bibliotek i Matlab och kontrollerar resultatet. Jag skulle vilja beräkna SMA med Matlab-funktionen för att validera värdena. I teorin bör SMA-värdena vara desamma antingen med C-biblioteket SMA eller Matlab SMA, höger i C är min SMA följande: statisk statisk dubbel SMA (dubbel serie, Int32-period) Kontrollera argument Int32 längd series. Length if (length 0) kasta ny ArgumentException (Serien kan inte vara tom) om (period gt längd) kasta ny ArgumentException (Perioden kan inte vara större än serielängd) Beräkna enkel glidande medel Dubbel sma ny Dubbeldel dubbel summa sma0 för (int bar 1 bar lt längd bar) om (bar lt period) summa seriesbar smabar summa (bar 1) annars smabar smabar - 1 (seriebar - seriebar - period) period Jag använder SMA som ett exempel för testning. Hej Miguel, du kan enkelt översätta din C-kod till matlab. Med den relevanta delen av din C-kod dubbel summa sma0 för (int bar 1 bar lt längd bar) om (bar lt period) summa seriebar smabar summa (bar 1) annars smabar smabar - 1 (seriebar - seriebar period) period I Matlab (snabb översättning): sma (1) serie (1) för j2: längd (serie) -1 om jltperiod sma (j) summa (serie (1: j) 1) (serie (j) - serier (j-period)) periodänderslut Men du får i stort sett samma resultat om du bara använder filter () med ett FIR-filter som består av en vektor med längdperiod med koefficienter (110) seriesrandn (100,1) hones (10,1) hh.10 smamatlabfilter (h, 1, serie) period sma (1) serie (1) för j2: längd (serie) -1 om jltperiod sma (j) sum 1: j)) (j1) annars sma (j) sma (j-1) (serie (j) - serier (j-period)) periodens slutändsplot (smamatlab, b, linjebredd, 2) , r) Det finns några uppstartseffekter att hantera i din metod, men du får bilden. Det fina med Matlab är att några bra utvecklare har gjort mycket arbete för dig. Du får skörda frukterna av deras arbete. Hoppas det hjälper, Wayne Miguel Moura ltmdNOSPAMmouragmREMOVEailgt skrev i meddelande ltgubrt2l11fred. mathworksgt. gt Wayne King ltwmkingtygmailgt skrev i meddelande ltgubl6qp821fred. mathworksgt. gt Hej Miquel med kontrollparametern, alfa, inställd på noll. Dina rörliga medelvärden beräknas genom att samla in din ingångssignal (serie) med två ändliga impulsresponsfiltrar med längd N med filterkoefficienter 1N. Så samtalet: gt gt movavg (serie, 3,10,0) gt gt filtrerar data i serie med två filter, en kommer att vara av längd 3 och ha filterkoefficienter gt gt gt gt filt113 13 13 3 koefficienter gt gt andra kommer att ha längd 10 och ha filterkoefficienter gt gt filt2110 110 110 110 110 110 110 110 110 110 10 koefficienter gt gt gt gt Du filtrerar sedan dina inmatningsdata med dessa FIR-filter. gt gt gt gt seriesrandn (100,1) skapa några slumpmässiga data gt gt outputfilt1filter (filt1,1, serie) filtrera några slumpmässiga data gt gt outputfilt2filter (filt2,1, serier) gt gt gt gt Om du nu plottar den data, kommer att se att båda filtrerade versionerna är mjukare än ingångsdata, men att outputfilt2 är mjukare än outputfilt1 eftersom du har använt ett längre glidande medelfilter. Jag tror inte att du vill att din ledningsinmatningsvariabel ska vara 1, för att det inte ger dig något. Jag är inte en ekonomisk person, men en tillämpning av att använda dessa glidande medelvärden av olika längder är att jämföra den faktiska dataen mot de glidande medlen av olika längd (en kort eller ledande och en längre eller försvagad) och se var den aktuella marknadsdata faller i förhållande till de olika glidande medelvärdena. Detta används för att göra slutsatser om tidsseriernas allmänna riktning (marknad). Byte av kontrollparametern ger dig viktade glidmedel eller exponentiella. gt gt gt gt Hope att hjälpa till, gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gtmgNOSPAMmouragmREMOVEailgt skrev i meddelande ltguahs5lgk1fred. mathworksgt. gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gtg (series, 1,20, 0) men jag är inte säker på om detta är korrekt. gt gt gt gt gt gt Vad ska jag använda för bly och lag gt gt gt gt gt gt? Tack, gt gt gt Mig gt gt gt Jag behöver använda Simple Moving Average i sin normala form eftersom jag skapade ett C NET-bibliotek för att göra det . Och jag använder detta bibliotek i Matlab och kontrollerar resultatet. gt gt Jag skulle vilja beräkna SMA med Matlab-funktionen för att validera värdena. gt gt I teorin ska SMA-värdena vara desamma antingen med C-biblioteket SMA eller Matlab SMA, rätt gt gt In C är min SMA följande: gt gt public static Double SMA (dubbel serie, Int32-period) gt gt Kontrollera argument gt Int32 längd series. Length gt if (längd 0) kasta ny ArgumentException (Serien kan inte vara tom) gt if (period gt length) kasta ny ArgumentException (Period gt kan inte vara större än serielängd) gt gt Beräkna enkelt glidande medel gt Double sma ny Doublelength gt gt sma0 series0 gt gt dubbel summa sma0 gt for (int bar 1 bar lt längd bar) gt gt om (bar lt period) gt gt sum seriebar gt smabar sum (bar 1) gt gt gt smabar smabar - 1 (seriebar - seriebar - gt period) period gt gt gt gt return sma gt gt gt Jag använder SMA som ett exempel för testning. gt gt Tack, gt Miguel Hej, anledningen till att jag använder C är enkel. Jag skapar en finansiell modell. Jag gör testningen i Matlab men i realtid använder jag C eftersom det har varit svårt att ansluta Matlab till API och för att vara ärlig mest API-användning eller C. Så realtid kommer det att bli en C WPF-applikation. För testning blir det Matlab. För samtycke bör båda systemen använda samma metoder för beräkning. Så skapar jag heller algoritmerna i C och skapar ett 3,5-bibliotek som ska användas i Matlab. Eller jag skapar allt i Matlab, kompilera till NET (som jag tror det är möjligt) att använda i WPF-applikationen. Vad skulle du rådgöra med mig Kanske det här senaste alternativet tror jag att det förmodligen kommer att spara mig mycket arbete. Men vad sägs om prestanda Men hur kan jag kompilera till exempel den koden i ett NET-bibliotek Vilket råd är det här så mycket välkommen. Tack, Miguel Wayne King ltwmkingtygmailgt skrev i meddelande ltgubuvu71g1fred. mathworksgt. gt sorry miguel ett galet tecken visas för mitt uttalande gt gt period i kodfältet nedan. gt gt wayne gt gt Wayne King ltwmkingtygmailgt skrev i meddelande ltgubuip7s81fred. mathworksgt. gt gt Hi Miguel, du kan enkelt översätta din C-kod till matlab. Ta den relevanta delen av din C-kod gt gt gt gt sma0 series0 gt gt gt gt summa sma0 gt gt för (int bar 1 bar lt längd bar) gt gt gt gt (bar lt period) gt gt gt sum serialbar gt gt smabar summa (bar 1) gt gt gt gt gt gt gt gt smabar smabar - 1 (seriebar - seriebar - gt gt period) period gt gt gt gt gt gt gt gt gt gt gt gt sma (1) serie (1) gt för j2: längd (serie) -1 gt gt om jltperiod gt gt sma (j) sum (serie (1: j)) (j1) gt gt else gt gt sma sma (j-1) (serier (j) - serier (j-period)) period gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt) men du får väsentligen samma resultat om du bara använder filter () med ett filter av en vektor med längdperiod med koefficienterna (110) gt gt gt seriesrandn (100,1) gt gtones (10,1) gt gthh10 gt gt smamatlabfilter (h, 1, serie) gt gt period gt gt sma (1) serier (1) gt för j2: längd (serie) -1 gt gt om jltperiod gt gt sma (j) summa (serie (1: j)) (j1) gt gt else gt gt sma (j) sma (j-1) (serie (j) - serie (j - period)) period gt gt gt gt gt gt gt gt gt gt plot (smamatlab, b, linewidth, 2) gt gt håller på gt gt plot (sma, r) ​​gt gt gt gt Det finns några uppstartseffekter att hantera i din metod, men du får bilden. Det fina med Matlab är att några bra utvecklare har gjort mycket arbete för dig. Du får skörda frukterna av deras arbete. gt gt gt gt Hope som hjälper, gt gt gt gt gt gt gt gt gt gt gt gt gt Miguel Moura ltmdNOSPAMmouragmREMOVEailgt skrev i meddelande ltgubrt2l11fred. mathworksgt. Wayne King ltwmkingtygmailgt skrev i meddelande ltgubl6qp821fred. mathworksgt. gt Hi gt Miquel med kontrollparametern, alfa, inställd på noll. Dina rörliga medelvärden beräknas genom att samla in din ingångssignal (serie) med två ändliga impulsresponsfiltrar med längd N med filterkoefficienter 1N. Så samtalet: gt gt gt gtavg (serier, 3,10,0) gt gt gt gt filtrerar data i serie med två filter, en kommer att vara av längd 3 och har filterkoefficienter gt gt gt gt gt gt gt filt113 13 13 3 koefficienter gt gt gt gt Den andra kommer att ha längd 10 och ha filterkoefficienter gt gt gt gt filt2110 110 110 110 110 110 110 110 110 110 10 koefficienter gt gt gt gt gt gtr gt Du filtrerar sedan dina inmatningsdata med dessa FIR-filter. gt gt gt gt gt gt seriesrandn (100,1) skapa några slumpmässiga data gt gt gt gt outputfilt1filter (filt1,1, serie) filtrera några slumpmässiga data gt gt gt gt outputfilt2filter (filt2,1, serie) gt gt gt gt gt gt gt gt Om du nu plottar den data ser du att båda filtrerade versionerna är mjukare än ingångsdata, men att outputfilt2 är mjukare än outputfilt1 eftersom du har använt ett längre glidande medelfilter. Jag tror inte att du vill att din ledningsinmatningsvariabel ska vara 1, för att det inte ger dig något. Jag är inte en ekonomisk person, men en tillämpning av att använda dessa glidande medelvärden av olika längder är att jämföra den faktiska dataen mot de glidande medlen av olika längd (en kort eller ledande och en längre eller försvagad) och se var den aktuella marknadsdata faller i förhållande till de olika glidande medelvärdena. Detta används för att göra slutsatser om tidsseriernas allmänna riktning (marknad). Byte av kontrollparametern ger dig viktade glidmedel eller exponentiella. gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt Migrator Moura ltmdNOSPAMmouragmREMOVEailgt skrev i meddelelse ltguahs5lgk1fred. mathworksgt. gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gtg gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt Jag använder movavg (serie, 1,20,0) men jag är inte säker på om detta är korrekt. gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt i sin normala form eftersom jag skapade ett C NET-bibliotek för att göra det. Och jag använder detta bibliotek i Matlab och kontrollerar resultatet. gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gtg gt gt gt gt gt gt gt gt gt gt gt gt gtg gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gtg gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt static gt Double SMA (dubbel serie, Int32-period) gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt Intllength series. Length gt gt if (length 0) throw new ArgumentException (Serien kan inte vara gt gt tom) gt gt gt gt längd) kasta ny ArgumentException (Period gt gt gt kan inte vara större än serielängd) gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt summa sma0 gt gt gt för (int bar 1 bar lt längd bar) gt gt gt gt gt (bar lt period) gt gt gt gt sum sum serial bar gt gt gt smabar sum (bar 1) gt gt gt gt annars gt gt gt gt gt smabar smabar - 1 (seriebar - seriebar - gt gt gt period) period gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt använder SMA som ett exempel för testning. gt gt gt gt gt gt gt gt gt gt gt gt Miguel Wayne King ltwmkingtygmailgt skrev i meddelande lth2auivpgk1fred. mathworksgt. Hej Ralph, ja det rörliga genomsnittet är implementerat på ett kausal sätt så det är bakåtblickande. I ditt samtal movavg (data, 10,10, e) har du samma fördröjning för både de ledande och eftersläpande medelvärdena så att du får samma utdata för gt gt short, long movavg (data, 10,10, e) gt Vanligtvis väljer människor olika värden för de glidande medelvärdena. gt Hopp som hjälper, gt wayne gt gt Ralph ltralphjbgmailgt skrev i meddelande lth2atdf6sc1fred. mathworksgt. gt gt Ja, så i mitt exempel skulle det vara tid n, n-1. n-9 exponentiell glidande medelvärde. Jag är ok att använda movavg (data, 10,10, e) gt gt gt gt mycket uppskattat gt gt gt gt Ralph Dont lita på EMA som Matlab implementerar. Det är inte det traditionella glidande medlet som används i finans. Faktum är att jag inte vet om deras version någonsin används. Med andra ord är det platt ut fel IMO. Heres vad Matlab använder: beräkna exponentiell glidande medelvärde beräkna utjämning konstant (alfa) alfa 2 (period1) första exponentiella medelvärdet är första pris b (1) tillgång (1) preallocate matriser b bzeros (r-period, 1) eftersläpande medelvärde För stora matriser av inmatningsdata, för loopar är effektivare än vektorisering. ledande medelvärde för j-perioden: r-1 b (j2-perioden) b (j-period1) alfas (tillgång (j2-perioden) - b (j-period1)) slut Första avstängningen är inte bra, till exempel vad händer om dina data såg ut så här 1, 4, 6, 20, 45 och fråga Matlab att beräkna en 5-årig EMA och det ger dig 1 som den första pt. mycket bättre är att använda SMA för den första punkten, och det slutar inte där titta på den faktiska EMA-beräkningen: tillgången (j2-perioden) är priset X perioder sedan när det i verkligheten borde vara dagens pris. Varje referens som Ive sett ger formeln: EMAtoday EMAyest alpha (PRICEtoday - EMAyest) Och för jämförelse Matlab: EMAtoday EMAyest alpha (PRICE period dagar sedan - EMAyest) den rätta raden ska läsa: Det här är en ganska seriös blunder och kan verkligen kasta bort din resultat som det gjorde i mitt fall. Inte tro det här har aldrig tagits upp. Du kan tänka på din klocklista som trådar som du har bokmärkt. Du kan lägga till taggar, författare, trådar och till och med sökresultat till din bevakningslista. På det här sättet kan du enkelt hålla reda på ämnen som du är intresserad av. För att se din tittellista, klicka på quotMy Newsreaderquot-länken. Om du vill lägga till objekt i din bevakningslista klickar du på citadeln för att titta på listotypslänk längst ner på en sida. Hur lägger jag till ett objekt i min vaktlista För att lägga till sökkriterier i din vaktlista, sök efter önskad term i sökrutan. Klicka på citatetLägg till den här sökningen i min klocklistor på länken på sökresultatsidan. Du kan också lägga till en tagg i din bevakningslista genom att leta efter taggen med direktivet quottag: tagnamequot där tagname är namnet på taggen du vill titta på. För att lägga till en författare till din bevakningslista, gå till författarens profilsida och klicka på quotAdvid denna författare till min watch listquot-länk högst upp på sidan. Du kan också lägga till en författare till din bevakningslista genom att gå till en tråd som författaren har skrivit ut till och klicka på quotAdd denna författare till min watch listquot link. Du kommer att få besked när författaren gör ett inlägg. Om du vill lägga till en tråd i din bevakningslista går du till trådsidan och klickar på citatet Lägg till den här tråden i min kollisionslistaquot-länk högst upp på sidan. Om nyhetsgrupper, nyhetsläsare och MATLAB Central Vad är nyhetsgrupper Nyhetsgrupperna är ett världsomspännande forum som är öppet för alla. Nyhetsgrupper används för att diskutera ett stort antal ämnen, göra meddelanden och handelsfiler. Diskussioner är gängade eller grupperade på ett sätt som låter dig läsa ett upplagd meddelande och alla dess svar i kronologisk ordning. Detta gör det enkelt att följa tråden i samtalet och för att se vad du redan har sagt innan du skickar ditt eget svar eller gör ett nytt inlägg. Nyhetsgruppens innehåll distribueras av servrar som är värd av olika organisationer på Internet. Meddelanden utbyts och hanteras med hjälp av öppna standardprotokoll. Ingen enskild enhet ldquoownsrdquo newsgroups. Det finns tusentals nyhetsgrupper som varje adresserar ett enda ämne eller intresseområde. MATLAB Central Newsreader postar och visar meddelanden i comp. soft-sys. matlab-nyhetsgruppen. Hur läser jag eller postar till nyhetsgrupperna Du kan använda den integrerade nyhetsläsaren på MATLAB Central webbplats för att läsa och skicka meddelanden i den här nyhetsgruppen. MATLAB Central är värd MathWorks. Meddelanden som skickas via MATLAB Central Newsreader ses av alla som använder nyhetsgrupper, oavsett hur de kommer åt nyhetsgrupperna. Det finns flera fördelar med att använda MATLAB Central. Ett konto Ditt MATLAB Central-konto är knutet till ditt MathWorks-konto för enkel åtkomst. Använd E-postadressen till ditt val MATLAB Central Newsreader tillåter dig att definiera en alternativ e-postadress som din postadress, för att undvika störningar i din primära brevlåda och minska spam. Spamkontroll De flesta nyhetsgruppspamfiler filtreras ut av MATLAB Central Newsreader. Taggningsmeddelanden kan märkas med en relevant etikett av någon inloggad användare. Taggar kan användas som nyckelord för att hitta specifika filer av intresse eller som ett sätt att kategorisera dina bokmärkta inlägg. Du kan välja att tillåta andra att visa dina taggar, och du kan visa eller söka otherrsquo-taggar såväl som de i samhället som helhet. Tagging ger ett sätt att se både de stora trenderna och de mindre, mer dunkla idéerna och applikationerna. Vaktlistor Med inställning av vallistor kan du få meddelande om uppdateringar gjorda till inlägg som valts av författare, tråd eller någon sökvariabel. Dina meddelanden om bevakningslista kan skickas via e-post (dagligen söndags eller omedelbart), visas i My Newsreader, eller skickas via RSS-flöde. Andra sätt att komma åt nyhetsgrupperna Använd en nyhetsläsare via din skola, arbetsgivare eller internetleverantör Betala för nyhetsgruppen tillgång från en kommersiell leverantör Använd Google Groups Mathforum. org ger en nyhetsläsare med tillgång till comp. soft sys. matlab-nyhetsgruppen Kör din egen server. För typiska instruktioner, se: slyckng. phppage2 Välj ditt land

No comments:

Post a Comment