Sunday 17 September 2017

Exponential Glidande-Medelvärde Filter Matlab


Efter bitar ihop bitarna från den här tråden byggde jag den här funktionen med hjälp av Octaves filterfunktion. Det börjar med det enkla glidande genomsnittet som grund. V är kolumnvektorn av siffror för att beräkna exponentiell glidande medelvärde. Fönstret är ett heltal som ett antal dagar. Jag använde 12. Här är en matematisk förklaring av denna funktion. Observera att sidan använder 2 (n1) (där n är fönstret eller antalet dagar) som alfa. men jag använder 1n eftersom det värdet av alfa passar mina behov. Justera alfa efter behov. Alternativt behöver jag ibland mina inmatnings - och utgångsvektorer dimensioner för att matcha. Jag fyller i ogiltiga värden med NaN genom att lägga till meanV NaN (window-1,1) meanV som sista raden i funktionen movingEMean. Du kan också fylla i det med simpleAvg om du vill ha en grov uppskattning. Använd MATLAB, hur kan jag hitta 3-dagars glidande medelvärde för en specifik kolumn i en matris och lägga till glidande medelvärde i den matrisen jag försöker beräkna 3- dag förflyttande medelvärde från botten till toppen av matrisen. Jag har angivit min kod: Med tanke på följande matris a och mask: Jag har försökt implementera kommandot conv men jag får ett fel. Här är conv kommandot jag har försökt använda på 2: a kolumnen i matris a: Utgången jag önskar ges i följande matris: Om du har några förslag, skulle jag verkligen uppskatta det. Tack För kolumn 2 i matris a, beräknar jag 3-dagars glidande medelvärde enligt följande och placerar resultatet i kolumn 4 i matris a (jag byttes matris a som 39desiredOutput39 bara för illustration). 3-dagarsgenomsnittet 17, 14, 11 är 14 3-dagarsgenomsnittet 14, 11, 8 är 11 3-dagarsgenomsnittet 11, 8, 5 är 8 och 3-dagarsgenomsnittet 8, 5, 2 är 5. Det finns inget värde i botten 2 rader för den 4: e kolumnen eftersom beräkningen för 3-dagars glidande medel börjar längst ner. Den 39valid39-utmatningen visas inte förrän minst 17, 14 och 11. Förhoppningsvis är det här meningsfullt Aaron Jun 12 13 at 1:28 Generellt skulle det hjälpa om du skulle visa felet. I det här fallet gör du två saker fel: Först måste din konvolver delas av tre (eller längden på det glidande medlet) För det andra märker du storleken på c. Du kan inte bara passa c till en. Det typiska sättet att få ett rörligt medelvärde skulle vara att använda samma: men det ser inte ut som du vill ha. Istället är du tvungen att använda ett par rader: Filtrera Accelerometer Data med Matlab och Arduino 15 april 2016 av Ryan Morrison I fortsättningen med min undersökning av MATLABArduino-gränssnittet, undersöker detta inlägg två metoder för att ta bort brus från sensordata: exponentiell glidande medelvärde och enkel glidande medelfilter. Som en föregångare till detta kan en introduktion till seriekommunikation och dataplotering med Arduino och MATLAB hittas på mitt tidigare inlägg. All kod som används i dessa inlägg finns tillgänglig på min GitHub repo. Återigen använder jag handledningsvideoerna från matlabarduino. org som referens, samtidigt som jag lägger till mina egna featuresimprovements längs vägen. Exponentiell glidande medelvärde (EMA) Det exponentiella glidande medelvärdet tilldelar en viktningsfaktor, med den senaste data som har den största vikten. Det beräknas med följande ekvation: I mitt tidigare inlägg är LSM303DLHC-accelerometern kopplad till en Arduino Uno, seriell kommunikation mellan Arduino och MATLAB är etablerad, och MATLAB plottar gravitationsaccelerationsvektorerna. Föregående MATLAB-kod är modifierad för att beräkna EMA och visa sida vid sida av råa och filtrerade data. Resultatet framgår av bilden nedan och skillnaden mellan rå och filtrerad data, eftersom reglaget ändrar alfavärdet. Jämförelse av råa (vänster) och EMA-filtrerade (höger) accelerationsvektorer. I grafen ovan hålls accelerometern i rymden med z-vektorn vinkelrätt mot jorden. Rörelser och vibrationer appliceras på accelerometern för att visa svar på plötsliga ändringar i orienteringen. Vid jämförelse av rådata till vänster med den filtrerade data till höger görs följande observationer: Alpha-värdet närmar sig 1 resulterar i högfiltrering av det filtrerade plotet rör sig väldigt lite som svar på rörelsen. Alfa-värdet närmar sig 0 resulterar i lågfiltrering, det är liten skillnad mellan råa och filtrerade tomter. Alfa-värdet runt 0,5 ger en optimal filtreringsnivå. Den filtrerade tomten är fri från oregelbunden jitter och svarar mot rörelsen. Enkelt glidande medelvärde (sma) Som namnet antyder använder detta filter ett enkelt medelvärde för inkommande sensordata. Vid varje iteration av kodslingan släpps det äldsta värdet i datasatsen och ersätts med den senaste läsningen och ett nytt medel beräknas. SMA ges av följande ekvation där nivån av brusreducering bestäms av n (antalet kranar). Storlekarna för xyzaxelaccelerationer visualiseras i 2D-diagram med användning av MATLAB. Både rå och filtrerad data presenteras, och en reglage används för att justera filtreringsmängden (antal kranar). Jämförelse av råa (topp) och SMA-filtrerade (nedre) xyz-accelerationsmagnetiteter. Accelerometern manipuleras på samma sätt som med EMA-filtret. För att sammanfatta effekterna av SMA-filtret: Zero-kranar, ingen filtrering av råa accelerometeravläsningar avslöjar hög känslighet för små störningar. Tio kranar med hög filtrering kraftig accelerometer rörelse är osynlig i filtrerade resultat. Fem kranar optimal filtreringsjitter elimineras, men filtrerade resultat återspeglar stora rörelser. slutsats Jag är nu ganska kompetent att använda MATLAB för sensorkarakterisering och kommer att utnyttja detta i framtida projekt. Det som omedelbart kommer att tänka är att tillämpa detta i observationsdefinitionen av tröskelvärden vid användning av accelerometrar i robottekniska applikationer. Ett exempel är den förbättring som gjorts på stöt-detektering genom att filtrera felaktig jitter som införs av kroppsvibrationer. Möjliga medelvärden 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) filtrerar data i serie med två filter, en kommer att vara av längd 3 och ha filterkoefficienter filt113 13 13 3 koefficienter Den andra kommer att ha längd 10 och ha 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 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 (serie, 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 seriens längd) Beräkna enkel glidande medel Dubbel sma ny Dubbeldel dubbelsumma 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änden 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) summa 1: j)) (j1) annars sma (j) sma (j-1) (serie (j) - serier (j-period)) periodens slutändalsplot (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 har 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 migmu moura ltmdNOSPAMmouragmREMOVEailgt 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 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 statisk statisk dubbel 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 serierbar 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 hur är det med prestanda Men hur kan jag kompilera till exempel den koden i ett NET-bibliotek Vilka råd om detta är 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 sum (bar 1) 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) sma (j-1) (serie (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 av en vektor med längdperiod med koefficienter (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 gt Miguel Moura ltmdNOSPAMmouragmREMOVEailgt skrev i meddelande ltgubrt2l11fred. mathworksgt. Wayne King ltwmkingtygmailgt skrev i meddelande ltgubl6qp821fred. mathworksgt. gt gt gt 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: 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 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 gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt 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 g gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt 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 längd) kasta ny ArgumentException (Period gt gt gt kan inte vara större än serielängd) gt gt gt gt Beräkna enkelt glidande medelvärde gt gt gt Dubbel sma ny Doublelength 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 (bar bar period) gt gt gt gt sum serierbar gt gt gt gtabar 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 Miguel Wayne King ltwmkingtygmailgt skrev i meddelande lth2auivpgk1fred. mathworksgt. Hej Ralph, ja det rörliga genomsnittet implementeras 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. Är jag ok att använda movavg (data, 10,10, e) gt gt gt? Mycket uppskattad 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) alfas 2 (period1) första exponentiella medelvärdet är första pris b (1) tillgång (1) preallocate matriser b bzeros (r-period, 1) slä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 för 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. Kan inte tro att detta aldrig har 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å så sätt 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å listotiklä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 klocklista 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å quotAddjär den här författaren 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 publicerat 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å citatetLägg till den här tråden i min larmlista-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. Diskussionerna är gängade eller grupperade på ett sätt som låter dig läsa ett postat 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 alla 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. Meddelandena om bevakningslistan kan skickas via e-post (dagligen digest eller omedelbar), 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