Monday 30 October 2017

Moving genomsnittet med labview


Flyttande medelvärden Vad är de? Bland de mest populära tekniska indikatorerna används glidande medelvärden för att mäta riktningen för den aktuella trenden. Varje typ av rörligt medelvärde som vanligtvis skrivs i denna handledning, eftersom MA är ett matematiskt resultat som beräknas genom att medelvärdet av ett antal tidigare Datapunkter En gång bestämd är det resulterande genomsnittet plottat på ett diagram för att låta handlare se på jämn data istället för att fokusera på de dagliga prisfluktuationerna som är inneboende på alla finansiella marknader. Den enklaste formen av en rörelse Genomsnittet, lämpligt känt som ett enkelt glidande medelvärde SMA, beräknas genom att ta det aritmetiska medelvärdet av en given uppsättning värden. För att exempelvis beräkna ett grundläggande 10 dagars glidande medelvärde skulle du lägga till slutkurserna från de senaste 10 dagarna och sedan Dela resultatet med 10 I figur 1 divideras summan av priserna för de senaste 10 dagarna 110 med antalet dagar 10 för att komma fram till 10 dagars genomsnittet Om en näringsidkare vill se ett 50-dagarsmedelvärde i Stället skulle samma typ av beräkning göras men det skulle inkludera priserna under de senaste 50 dagarna. Det resulterande genomsnittet under 11 tar hänsyn till de senaste 10 datapunkterna för att ge handlare en uppfattning om hur en tillgång prissätts relativt De senaste 10 dagarna. Kanske undrar du varför tekniska handlare kallar det här verktyget ett glidande medelvärde och inte bara ett vanligt medel Svaret är att när nya värden blir tillgängliga måste de äldsta datapunkterna släppas från uppsättningen och nya datapunkter måste komma I att ersätta dem Således går datasatsen kontinuerligt för att redogöra för nya data när den blir tillgänglig. Denna beräkningsmetod säkerställer att endast den aktuella informationen redovisas i Figur 2, när det nya värdet på 5 läggs till i uppsättningen , Den röda rutan som representerar de senaste 10 datapunkterna flyttas till höger och det sista värdet av 15 släpps från beräkningen Eftersom det relativt lilla värdet av 5 ersätter högt värde av 15, skulle du förvänta dig att se genomsnittet av t Hans dataset minskar vilket det gör, i det här fallet från 11 till 10.What Moving Averages Look Like När välvärdena för MA har beräknats, plottas de på ett diagram och sedan kopplas för att skapa en rörlig genomsnittslinje Dessa kurvor Linjer är vanliga på diagrammen för tekniska handlare, men hur de används kan variera drastiskt mer på detta senare. Som du kan se i Figur 3 är det möjligt att lägga till mer än ett glidande medelvärde till ett diagram genom att justera antalet tidsperioder Används vid beräkningen Dessa kurvor kan tyckas distraherande eller förvirrande först, men du kommer att bli vana vid dem som tiden går. Den röda linjen är helt enkelt genomsnittspriset under de senaste 50 dagarna, medan den blå linjen är genomsnittspriset över Senaste 100 dagarna. Nu när du förstår vad ett rörligt medelvärde är och hur det ser ut, ska vi introducera en annan typ av rörligt medelvärde och undersöka hur det skiljer sig från det tidigare nämnda enkla rörliga genomsnittet. Det enkla glidande medlet är extremt pop Ular bland handlare, men som alla tekniska indikatorer har det kritiker. Många individer hävdar att användbarheten av SMA är begränsad eftersom varje punkt i dataserien är vägd densamma, oavsett var det sker i sekvensen. Kritiker hävdar att Senaste uppgifterna är mer signifikanta än de äldre uppgifterna och borde få större inverkan på slutresultatet. På grund av denna kritik började näringsidkare lägga större vikt vid de senaste uppgifterna, som sedan lett till uppfinningen av olika typer av nya medelvärden, Den mest populära är det exponentiella glidande genomsnittet EMA För vidare läsning, se Grunderna för viktade rörliga medelvärden och vad är skillnaden mellan en SMA och en EMA. Exponential Moving Average Det exponentiella glidande medlet är en typ av glidande medelvärde som ger mer vikt Till de senaste priserna i ett försök att göra det mer mottagligt för ny information Att lära sig den något komplicerade ekvationen för att beräkna en EMA kan vara onödig för många tra Eftersom nästan alla kartläggningspaket gör beräkningarna för dig Men för dig matematiska geeks där ute, här är EMA-ekvationen. När du använder formeln för att beräkna den första punkten hos EMA kan du märka att det inte finns något värde tillgängligt för Använd som tidigare EMA Detta lilla problem kan lösas genom att starta beräkningen med ett enkelt glidande medelvärde och fortsätta med ovanstående formel från där Vi har försett dig med ett provkalkylblad som innehåller verkliga exempel på hur man beräknar både en enkel Glidande medelvärdet och ett exponentiellt rörligt medelvärde. Skillnaden mellan EMA och SMA Nu när du har en bättre förståelse för hur SMA och EMA beräknas, låt oss ta en titt på hur dessa medelvärden skiljer sig. Genom att titta på beräkningen av EMA , Kommer du att märka att större vikt läggs på de senaste datapunkterna, vilket gör det till en typ av vägt genomsnitt. I Figur 5 är antalet tidsperioder som används i varje genomsnitt identiskt 15, men EMA svarar m Malm snabbt till de förändrade priserna Observera hur EMA har ett högre värde när priset stiger och faller snabbare än SMA när priset sänks. Denna responsivitet är den främsta anledningen till att många handlare föredrar att använda EMA över SMA. What Använder de olika dagarna Medflyttande medelvärden är en helt anpassningsbar indikator, vilket innebär att användaren fritt kan välja vilken tidsram de vill ha när de skapar genomsnittet. De vanligaste tidsperioderna som används i glidande medelvärden är 15, 20, 30, 50, 100 och 200 dagar Ju kortare tidsintervallet användes för att skapa medelvärdet desto känsligare blir det för prisändringar Ju längre tidspositionen är, desto mindre känslig eller mer utjämning blir medeltiden Det finns ingen rätt tidsram att använda när Skapa ditt glidande medelvärde Det bästa sättet att ta reda på vilket som passar dig bäst är att experimentera med ett antal olika tidsperioder tills du hittar en som passar din strategi. Beräkning av rörande medelvärde. Detta VI beräknar och visar Det rörliga genomsnittet med ett förinställt nummer. Först initierar VI två skiftregister. Topskiftregistret initialiseras med ett element och lägger sedan kontinuerligt det föregående värdet med det nya värdet. Detta skiftregister håller summan av de sista x-mätningarna. Efter delning Resultaten av add-funktionen med det förinställda värdet beräknar VI det glidande medelvärdet. Det nedre skiftregistret innehåller en matris med medelvärdet. Detta skiftregister håller alla värden av mätningen. Ersättningsfunktionen ersätter det nya värdet efter varje slinga. Detta VI är mycket effektiv och snabb eftersom den använder funktionen ersättningselementet inuti mellanslingan och den initierar arrayen innan den går in i loop. This VI skapades i LabVIEW 6 1.Bookmark Share. Simple Moving Average VI. Uppsiktligen när folk pratar Om ett rörande medelvärde, menar de ersätt punkt N med medelvärdet av M-punkter som omger punkt N Anta att jag har 100 poäng vars värden är 1, 2, 3 100 och Jag vill göra en 5-punkts Rörlig medelvärde Första sak att notera är att det finns ett. Det rörliga genomsnittet för den tredje punkten är medeltalet 1, 2, 3, 4, 5 3 Medelvärdet av den fjärde punkten är medelvärdet Av 2, 3, 4, 5, 6 4 Detta är dock kanske för enkelt ett exempel Hur är det med genomsnittet av en stegfunktion, 0 från 1 till 10, därefter 20 därefter. Hämta, kasta ut punkterna 1 och 2 Medelvärdet av Pekar 1-5 för att gå in i punkt 3 0 eftersom alla punkter är 0 På samma sätt som punkt 4, 5, 6,7 och 8 Men punkt 9 är medeltalet 0, 0, 0, 0, 20 4 Vad sägs om Point 10 Tja, det borde vara medeltalet 0, 0, 0, 20, 20 8, men kom ihåg att inte skriva över punkt 9 Hmm. Det verkar som om vi behöver hålla två kopior av Array som i allmänhet är dyra. Det finns flera sätt att undvika att göra detta. Förstår du var problemet uppstår i föregående stycke. Om inte, försök att göra det med penna och papper eller prova det i LabVIEW. Jag ska ge dig svaret så att du kan kontrollera - den rörliga Genomsnitt av Stegfunktionen är -, -, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 20, 20 -, - var - är de tomma värdena vid Ändarna av matrisen, punkterna du inte har tillräckliga grannar. PS - det skulle inte överraska mig om det skulle vara LabVIEW-funktion som gör det här för dig Men om du lär dig LabVIEW och vill ha en bättre förståelse för hur Algoritmer du pluggar i jobbet gör det aldrig ont att spela och prova själv Du kan till och med komma med en förbättring som flera av oss har gjort. Tankar för sensibilisering med avseende på de finare punkterna i Moving Average-metoden. Denna afterall är ett statistiskt verktyg som Hjälper till att se vad du vill se abstrahera distraktorerna Så metoden är bunden att ha några brister i vissa situationer eller sammanhang. Men jag antar att den passar perfekt för min snygga DF-datalogging - det är ett tryck eller en temperatur eller en flödessignal - och jag Förvärva på något som 400 prov sek och sedan använda ett genomsnittligt singelprov Och processen är ganska långsam som min Huvudkoden körs inte längre än 20 Hz Så när jag gör ett 5 provmätningsgenomsnitt kommer mitt första prov 5 x 50 m senare, och för varje 50 m får jag ett giltigt urval. Jag är särskilt bekymrad över trender och inte värden i Det här finns lite oro för missade prov eller skurvärden. Naturligtvis skulle jag inte våga använda detta för en stegfunktion. Det skulle vara grymt. Raghunathan LV2012 att automatisera hydrauliska provrigs. Möjliggör 4 av 15 1,104 Visningar. Rea Enkelt Flyttande Medeltal VI. 03-30-2016 11 58 PM. Det finns en genomsnittlig ptbypt som gör detsamma. Du kan inspektera koden om du vill. En stor fel i din kod är det faktum att du ständigt växer och krymper en befintlig matris. Du borde försöka hitta en Lösning som fungerar på plats i en fast storlek array Kan exempel har skrivits på forumet genom åren ser hee till exempel Medeln bryr sig inte om elementen är i ordning, så att du helt enkelt kan byta ut det äldsta elementet, oavsett vilket Där den ligger. Du förbereder också det nya elementet till början av en befintlig array, vilket alltid är mycket dyrare än att lägga till slutet. Din samplingsstorlek kan inte ändras när VI körs. Ditt skiftregister bör initialiseras med En tom array, inte en array som redan innehåller ett enda element som är noll Denna extra noll kommer att ge fela medelvärden. Din kod ska göras i en subVI så att den kan återanvändas liknande den ptbypte versionen. Din VI kan aldrig stoppas , Just aborted. Good optimering tips Poin T vid initialisering med Zero missade mig Och ja, användaren ska inte ändra provstorleken när den börjar springa. Slutligen ska jag göra en SubVI och hantera saker som att stoppa etc. Ans till punkten för att lägga ut än att lägga till det nya värdet till array, kanske Det finns en prestationsstraff, men med tanke på storleken på min array är jag säker på att CPU inte bryr sig annorlunda Men för mig måste det vara så här som jag använder de slutliga data för att plotta en trend av en fysisk parameter. Tack för din tid. Raghunathan LV2012 för att automatisera hydrauliska provrigs. tankar för sensibilisering avseende de finare punkterna i Moving Average-metoden Denna afterall är ett statistiskt verktyg som hjälper till att se vad du vill se abstrahera distraktorerna Så metoden är bunden att ha några brister i vissa situationer Eller kontext. Men jag antar att den passar perfekt för min snygga DF-dataloggning - det är ett tryck eller en temperatur eller en flödessignal - och jag förvärvar på något som 400 samples sek och sedan använder ett genomsnittligt prov och processen är Ganska långsamt, eftersom min huvudkod körs med högst 20 Hz Så när jag gör ett 5 provmätningsgenomsnitt kommer mitt första prov 5 x 50 m senare, och för varje 50 m får jag ett giltigt prov. Aha Så du vill inte flytta Genomsnitt, men bara ett enkelt medel Det är mycket lättare Här är tanken som fungerar mycket bättre med en Producer Consumer Design. Så du är provtagning vid 400Hz, vill spara data vid 400 Hz, dvs spara alla data till disken, men vill ha Att visa på 20 Hz eftersom du vill se trender, en längre tidsbas etc. Anlägga ditt AD-system för att samla 20 prover vid 400Hz notera att du kan samla N-kanaler samtidigt, vilket ger dig en 2D-serie prov Som du Hämta data vid 20 Hz från AD, vilket gör det till producenten, skicka det till konsumenten. Konsumenten börjar med att skriva data till disken om du inte tar mycket tid Nu har du en 2D-array - i en för loop, på en kanal - kanalbasis, medeltal de 20 poängen Nu har du en 1D-array, med en medelvärde för varje kanal. Fortsätt och diagram Det. Notera att detta schema a använder alla data, b hanterar flerkanalsdata med aplomb och, om du är från Mellanöstern där de växer, kan du också hantera dina data med en saftig plommon och c låter dig samla Dina data från AD-utrustningen, spara dina data till disken, hålla alla punkter och visa dina data på skärmen med alla dina poäng men också medelvärdet för att förbättra visuellt signalförhållande, allt utan att förlora data jag Gjort exakt detta med 24 kanaler vid 1 KHz, med data som tas på ett fjärranslutet system och skickas till PC via TCP IP, så vi har även TCP-bearbetning i loop. Welcome till den spännande världen av Data Acquisition och Processing med LabVIEW Trust Mig, det här är ett underbart system för att göra denna typ av arbete. Baserat på den feedback jag fick på mitt ursprungliga VI har jag förfinat Moving Average-koden till en subVI. Jag använde den för att genomsnittsa en simulerad 10Channel-data - bara för att hålla saker Enkelt jag såg till att alla10 kanaler hade identiska data man skulle då Förvänta mig att få samma rörliga medelvärde för alla 10 kanaler jag är förvånad över den lilla variansen jag märker mellan kanaler - vanligtvis är de nära men inte exakta. Och bara för att förklara processen jag försöker har jag också enclsoed en XLS. So var gör Variationen kommer in från det enhetliga skiftregistret inuti sub VI. Raghunathan LV2012 till Automate Hydraulic Test Rigs. Message 9 av 15 1,007 Views. Re Simple Moving Average VI. 04-01-2016 10 25 AM. Your kod saknar fortfarande mening SInce du ringer subVI en skalar åt gången, får du inte vad du vill, eftersom skiftregistret bara hämtar de sista N-skallarna, oavsett vilken kanal det är Är från Din kod är fortfarande mycket ineffektiv och omvandlad, till exempel varför använder du fortfarande inlägg i array för att lägga till både i maniken i underdelen. Du kan använda en reenetrant subVI och en parallell innerlig FOR-loop, men det verkar också alltför komplicerat. Om Du vill göra ett löpande medelvärde på varje kanal, måste subVI hålla en 2D-array i subVI. Allt detta har gjorts innan. Message 10 of 15 991 Views.

No comments:

Post a Comment