AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Algorithmus "events pro Stunde"

Ein Thema von myicq · begonnen am 17. Mär 2017 · letzter Beitrag vom 18. Mär 2017
Antwort Antwort
myicq

Registriert seit: 5. Jan 2016
70 Beiträge
 
Delphi 6 Professional
 
#1

Algorithmus "events pro Stunde"

  Alt 17. Mär 2017, 12:35
Ich habe eine Applikation mit Anwender-erstellte Envent (zb Knopfdruck).

Ich wurde gefragt eine Anzeige darzustellen "events pro Stunde" - dH "wieviele Events wird passieren mit gleicher geschwindigkeit".

Ich kenne die genaue Zeit einer Event, und kann deshalb relativ einfach das berechnen. Beispiel: 5 Minuten Event 1 zu Event 2 = 12 Events pro Stunde.

Wie kann ich das im Praxis umsetzen ? Und würde es nicht sinn machen über eine größere Anzahl Events auszurechnen, statt nur letzter 2 ?

Erste gedanken - eine Shiftregister über "N" events.

Gibt es schon Algorithmen für etwas ähnliches.

Hoffentlich verständlich erklärt.

Danke
  Mit Zitat antworten Zitat
t.roller
(Gast)

n/a Beiträge
 
#2

AW: Algorithmus "events pro Stunde"

  Alt 17. Mär 2017, 13:04
Nehmen wir als Beispiel einen EKG-Monitor:
Fast jeder Mensch hat einen unregelmässigen Herzschlag - das liegt zum Teil an der Abhängigkeit von der Atmung (Beschleunigung bei der Einatmung, Verringerung bei der Ausatmung), zum Teil an der Herzschädigung.
Da die Anzeige der Herzfrequenz/Min ständig springen würde, wenn man nur den Abstand von 2 R-Zacken auswerten würde, nimmt man den Mittelwert von 2 Abständen innerhalb von 3 R-Zacken.

Wenn dann immer noch grosse Sprünge in der Digital-Anzeige auftreten, kann die Elektronik (Arrhythmie-Erkennung) auch mehr R-Zacken auswerten.

Bei Events anderer Art hängt es von der möglichen Abweichung ab, wie viele Events man auswertet.

Geändert von t.roller (17. Mär 2017 um 13:07 Uhr)
  Mit Zitat antworten Zitat
myicq

Registriert seit: 5. Jan 2016
70 Beiträge
 
Delphi 6 Professional
 
#3

AW: Algorithmus "events pro Stunde"

  Alt 17. Mär 2017, 13:14
Genau so ist das.

Ist meine Idee korrekt, eine "schieberegister" zu verwenden, zB eine TList oder Array[1..N] (N=Samplezahl) zu nehmen, und dann duchschnitt damit auszurechnen ?

Damit habe ich zB
Code:
S[0] = 00:00:01
S[1] = 00:05:01
S[2] = 00:15:01
..
S[N] = 00:51:09
Jetzt habe ich 0-1 = 5 min, 1-2 = 10 min... etc. Und kann dadurch über N-1 werte durchschnitt ausrechnen, und dann in Dezimalstunden umrechnen.
  Mit Zitat antworten Zitat
t.roller
(Gast)

n/a Beiträge
 
#4

AW: Algorithmus "events pro Stunde"

  Alt 17. Mär 2017, 13:51
Wenn die Events tatsächlich REGELMÄSSIG auftreten, muss man sie beispielsweise nur für einen BESTIMMTEN ZEITRAUM (z.B. 10 min) zählen und mit 6 multiplizieren.
Wenn sie UNREGELMÄSSIG auftreten, zählt man 10 Minuten lang, multipliziert man mit 6, zählt wieder 10 Minuten lang, multipliziert mit 3, zählt wieder 10 Minuten lang, multipliziert mit 2.
Dann wird die Anzeige ziemlich genau.

Kleiner Test mit der SPACE-Taste - wertet nur 2 Intervalle aus:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
a1:= 0; a2:= 0; a3:= 0; // globale var
Form1.Tag:=0;
end;
// KeyPreview:= TRUE;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Form1.Tag>2 then BEGIN
Label1.Caption:= INTTOSTR(((a3-a2)+(a2-a1))div 2)+' msec';
Form1.Tag:=0; a1:= 0; a2:= 0; a3:= 0;
END;
Form1.Tag:= Form1.Tag + 1;
case Form1.Tag of
1: a1:= GetTickCount;
2: a2:= GetTickCount;
3: a3:= GetTickCount;
end;
end;
  Mit Zitat antworten Zitat
BrightAngel

Registriert seit: 13. Mär 2007
130 Beiträge
 
#5

AW: Algorithmus "events pro Stunde"

  Alt 17. Mär 2017, 15:57
Ist das nur eine Anzeige, oder darfst du auch Optionen vom Benutzer verlangen?

Folgende Probleme sehe ich für "allgemeine Zählung" Betreff der Regelmäßigkeit: Wie sensitiv soll das System Ausreißer anzeigen? Je größer dein "gemitteltes Fenster" desto träger und unwesentlicher Ausreißer (Option 1: Ausreißersensitivität).
Du kannst dafür auch mitteln und dann die Standardabweichung entscheiden lassen, ob du den Ausreißer als wirkliche Änderung oder nur als "Rauschen" interpretierst (Option 2: Standardabweichungsschwellwert).
Dann kannst du zusätzlich vielleicht abhängig wie groß die Standardabweichung grade ist die Fenstergröße über die du mittelst einstellen (Option 3: Sensitivität der Fenstergröße)

Für generelle Umgebungen ein statisches Modell zu finden ist denke ich schwer. Gerade weil von den unterschiedlichen Systemen unterschiedliche Verhalten zu erwarten sind. Vielleicht helfen dir die Stellgrößen, die ich hier mal Hemdsärmlig definiert habe weiter...?

Zudem: Eine Anzeige muss ja nicht nur eine Zahl sein. Darfst du ein Diagramm malen? Eventuell kannst du im zeitlichen Verlauf auf einem kartesischen Koordinatensystem auch eine geglättete Kurve über die Vergangenheit anzeigen und oben und unten einen "Funktionsschlauch" drumrum, der die (evtl Ausreißer berücksichtigenden) Standardabweichung zu den jeweiligen Zeitpunkten abbildet?
Oder wenn du nicht malen darfst: Wenigstens zusätzlich die gegenwärtige (über ein kleineres Fenster geglättete) Standardabweichung anzeigen?

Brighty
Do you have the email of god??? --- I have to tell him that I'm happy to be born!
  Mit Zitat antworten Zitat
myicq

Registriert seit: 5. Jan 2016
70 Beiträge
 
Delphi 6 Professional
 
#6

AW: Algorithmus "events pro Stunde"

  Alt 18. Mär 2017, 01:05
@BrightAngel: ich muss nur eine Zahl darstellen, und muss nicht absolut genau sein.

Es wird gebraucht für events die Häufig zw 5000 und 40.000 mal der Stunde vorkommt. Wenn ich da so etwa +/- 200 bin ist es schon nicht schlecht.

Ich habe soweit verstanden. Danke an alle.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#7

AW: Algorithmus "events pro Stunde"

  Alt 18. Mär 2017, 08:20
Wie BrightAngel schon andeutet:
Das sollte man mit einfacher Statistik machen.

Also gleitenden Mittelwert, über eine definierbare Laufzeit (schneller/langsamer), je nachdem
wie schnel und wie stabil die Zahl sich ändern soll.

Ich würde auch auf Ausreisser oder schnelle Änderungen adaptiv reagieren, damit die Zahl Trendänderungen schnell folgen kann, aber nicht zu sehr rauscht.

Mit Standardabweichung kannst du die Schwankungsbreiten aus dem Signal abschätzen, und darauf entsprechend dynamisch reagieren.

Ein Vorteil wäre noch das du echte Ausreisser schnell erkennen kannst, und vieleicht gesondert anzeigen kannst.

Rollo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz