Puzzel Puzzels
elbartje
Artikelen: 0
Berichten: 144
Lid geworden op: wo 28 mar 2012, 19:38

data analyse dip detecteren

 Hallo

Ik zou graag een script/programma willen schrijven dat een dip in een dataset kan detecteren.

Nu ik heb wel een idee hoe ik dit zou kunnen doen (met de afgeleide) maar hoe ik dit praktisch kan aanpakken is mij nog niet helemaal duidelijk.

Ik kan wel wat programmeren in VB of C# maar  ben er toch nog niet helemaal uit.

Kunnen jullie mij op weg zetten om soortgelijke data-analyse te automatiseren.

Data die ik zou willen analyseren ziet er als volgt uit (in de praktijk natuurlijk met wat ruis).
 
 

ads

Steun Sciencetalk Logitech M185 - Draadloze Muis - Grijs

Logitech M185 - Draadloze Muis - Grijs

Bekijk product

Steun Sciencetalk Just Dance 2026 Edition - Nintendo Switch - Code in a box

Just Dance 2026 Edition - Nintendo Switch - Code in a box

Bekijk product

Steun Sciencetalk bol cadeaukaart - 5 euro - HiepHiep

bol cadeaukaart - 5 euro - HiepHiep

Bekijk product

Gebruikersavatar
Olof Bosma
Moderator
Artikelen: 0
Berichten: 816
Lid geworden op: do 31 jul 2014, 18:38

Re: data analyse dip detecteren

Allereerst moet je van de ruis af. Als je de ruis zou differentiëren krijg afhankelijk van de frequenties die daarin voorkomen, direct een vals signaal. Dat kun je doen met een laagdoorlaatfilter. Een tweepolig filter doet het meestal wel goed. Bij voorkeur heeft dat filter geen doorschot; dat zou de originele datastroom kunnen aantasten. Dat programmeer je als volgt:
 
Noem de te analyseren datastroom Vi[n]. De gefilterde datastroom wordt afgeleverd in Vo[n]. ‘n’ geeft het volgnummer van de te analyseren data weer. 
Dan zijn er twee tussen variabelen nodig Y[n-1] en Y[n-2]. 
Alle velden worden geïnitialiseerd met de waarde ‘0’.
Er zijn twee constanten: P en Q. 
Q bepaalt de mate van ruisonderdrukking. Bij een waarde van 3,2 geeft het filter geen doorschot. Bij een lagere waarde is de ruisonderdrukking beter maar ontstaat er wel doorschot. Bij Q=2 is er ongeveer 5% doorschot.
P bepaalt de kantelfrequentie van het filter. Je wilt de ruis eruit hebben maar niet de verschijnselen die je wilt detecteren.
In een loop worden de volgende instructies geprogrammeerd:
 
Y[n-1] = P.Q.Vi[n-2] + (P.(1-Q)+1).Y[n-2] - P.Vo[n-2] 
Vo[n] = P.Y[n-1] + (1-P).Vo[n-1]
 
Zo verkrijg je een gefilterde dataset. Als de data real time verwerkt wordt dient de loop ook met een vaste herhalingstijd te worden uitgevoerd. De frequentie van de loop is recht evenredig met de kantelfrequentie van het filter.
Het differentiëren van het verkregen signaal om een dip te detecteren is niet zo moeilijk. De eerste afgeleide vind je door:
 
Vo[n]’ = Vo[n] – Vo[n-1]
 
Ik hoop dat je zo voldoende hebt om te beginnen.
dat wel natuurlijk
Scispace Scispace

Scispace is dé ai voor wetenschappers en onderzoekers. Ga naar SciSpace en profiteer van één van de beste ai's.

Scispace

elbartje
Artikelen: 0
Berichten: 144
Lid geworden op: wo 28 mar 2012, 19:38

Re: data analyse dip detecteren

Heel erg bedankt voor je antwoord, hier kan ik mee verder!
Mijn excuses voor het late antwoord.
elbartje
Artikelen: 0
Berichten: 144
Lid geworden op: wo 28 mar 2012, 19:38

Re: data analyse dip detecteren

Olof Bosma schreef: Dan zijn er twee tussen variabelen nodig Y[n-1] en Y[n-2]. 
Alle velden worden geïnitialiseerd met de waarde ‘0’.
Ik ben niet helemaal wat deze tussen variabelen zijn.

Ik heb het proberen uit te werken maar loop wel vast.

Misschien kan jij me verder helpen ?

n | VI |VO |Y 
0 | 3  | ? |?
1 | 5  | ? |?
2 | 9  | ? |?
 
n =0
Vo[0] = 0   
 
n=1             
Vo[1] = P.Y[1-1] + (1-P).Vo[1-1]
Y[1-1]  --> Y[n-1] = P.Q.Vi[1-2] + (P.(1-Q)+1).Y[1-2] - P.Vo[1-2] 
Vo[1-2] -> ?
Vi[1-2] -> ?
Y[1-2] -> ?
 
n=2   
Vo[2] = P.Y[2-1] + (1-P).Vo[2-1]
Y[2-1] = P.Q.Vi[2-2] + (P.(1-Q)+1).Y[2-2] - P.Vo[2-2] 
Vi[2-2]= 3
Y[2-2] =Y0 ?
Vo[2-2] = 0
 
n=3
Vo[3] = P.Y[3-1] + (1-P).Vo[3-1]
Y[3-1] = P.Q.Vi[3-2] + (P.(1-Q)+1).Y[3-2] - P.Vo[3-2]
Vi[3-2] = 5
Y[3-2] = Y1 ?
Vo[3-2] = ?

 
Gebruikersavatar
Olof Bosma
Moderator
Artikelen: 0
Berichten: 816
Lid geworden op: do 31 jul 2014, 18:38

Re: data analyse dip detecteren

Misschien heb je wat aan een paar voorbeelden op basis van jouw getallen:
 
als P = 0,5    Q = 3,2
 
n    VI    VO      Y
0     0     0         0
1     3     0         0
2     5     0       4,8
3     9    2,4     7,52
 
Bij P = 0,5 ligt de kantelfrequentie onrealistisch hoog; zelfs deze snelle storingspuls zie je nu door het filter komen. Iets meer realistisch is P = 0,05:
 
als P = 0,05    Q = 3,2
 
n    VI    VO      Y
0     0     0         0
1     3     0         0
2     5     0       0,48
3     9   0,024 1,227
 
Nu wordt deze storingspuls al veer beter onderdrukt. Realistisch is P = 0,005:
 
als P = 0,005    Q = 3,2
 
n    VI    VO      Y
0     0      0        0
1     3      0        0
2     5      0       0,048
3     9 0,00024 0,1275
 
Nu zie je dat deze snelle storingspuls flink wordt onderdrukt.
dat wel natuurlijk
Gebruikersavatar
Olof Bosma
Moderator
Artikelen: 0
Berichten: 816
Lid geworden op: do 31 jul 2014, 18:38

Re: data analyse dip detecteren

Een beter inzicht in het algoritme krijg je als je de testpuls wat uitbreidt en laat volgen door een negatieve puls.
Wat je dan ziet is dat na de puls een kleine waarde overblijft (ongeveer 10%) doordat de puls gemiddeld positief was. Als de dan de negatieve puls volgt neutraliseert dat weer naar ongeveer nul. Om dit binnen een overzichtelijk aantal samples zichtbaar te krijgen heb ik de kantelfrequentie P = 0,05 gezet.
Q = 3,2.
In werkelijkheid kun je de kantelfrequentie beter rond 0,005 leggen en als het hoger moet de cyclustijd verkorten.
 
De tabel blijkt niet direct zichtbaar te krijgen dus daarom maar in Excel-formaat bijgevoegd.
 
 
Bijlagen
Puls response
(15 KiB) 113 keer gedownload
dat wel natuurlijk
elbartje
Artikelen: 0
Berichten: 144
Lid geworden op: wo 28 mar 2012, 19:38

Re: data analyse dip detecteren

Ik heb even zelf wat data toegevoegd.

Het is mij wel (nog) niet gelukt om de dip te detecteren in de afgeleide.
 
(is de bijlage gelukt ?)

Hier is de bijlage ;)
Bijlagen
Puls response
(77.5 KiB) 177 keer gedownload
Gebruikersavatar
Olof Bosma
Moderator
Artikelen: 0
Berichten: 816
Lid geworden op: do 31 jul 2014, 18:38

Re: data analyse dip detecteren

In jouw voorbeeld staat de kantelfrequentie veel te laag ingesteld; hierdoor wordt ook de puls die je wilt detecteren 'plat' gefilterd. Als ik in jouw spread sheet P = 0,5 instel, wordt de puls netjes gedetecteerd. Je programma werkt dus prima.
Het is in zulke gevallen altijd nauwkeurig mikken met de kantelfrequentie; de ruis moet zoveel mogelijk weg maar de te meten signalen moeten wel blijven zitten.
Overigens begin je het inkomend signaal aan de start plotseling met een waarde van 40,8242. Dat is in dit voorbeeld nu de grootste sprong die er dan ook in het uitgangssignaal uit knalt.
Ik adviseer je wel als dat mogelijk is P lager te houden en de sample rate te verhogen. De berekening geeft dan meer resolutie.
dat wel natuurlijk

ads

Steun Sciencetalk bol cadeaukaart - 50 euro - Bedankt!

bol cadeaukaart - 50 euro - Bedankt!

Bekijk product

Steun Sciencetalk Western Digital Elements Portable - Externe Harde Schijf - 4 TB

Western Digital Elements Portable - Externe Harde Schijf - 4 TB

Bekijk product

Steun Sciencetalk PlayStation 5 - Disc Edition - Slim

PlayStation 5 - Disc Edition - Slim

Bekijk product

elbartje
Artikelen: 0
Berichten: 144
Lid geworden op: wo 28 mar 2012, 19:38

Re: data analyse dip detecteren

Bedankt voor alle hulp Olof Bosma !

Plaats een reactie

Je mail wordt niet openbaar getoond. Het wordt enkel gebruik voor contact of notificatie vanuit het beheer.

🗨️ Wat vind jij? Stel direct je vraag of geef je mening – zonder registratie. Je reactie zet het topic weer bovenaan bij 'Laatste posts' en trekt snel nieuwe reacties aan🔥. Mocht je als vaste bezoeker willen reageren, dan kun je je ook registreren.

Bevestig dat je geen robot bent door de volgende vragen te beantwoorden.

Noor heeft 10 knikkers. Ze verliest er 4 in het gras. Hoeveel heeft ze er nog?

Antwoord: (vul een getal in)

Er zitten 5 vogels op een hek. Twee vliegen weg. Hoeveel blijven er zitten?

Antwoord: (vul een getal in)

Terug naar “🏗️ Praktische en overige technische wetenschappen”

Sciencetalk: Leer, deel of groei. Volg of geef een cursus op Sciencetalk!