Wiederholungen in Datensatz erkennen?!

Kumaro

Mitglied
Hallo liebe Java-forum.org Gemeinde :),
ich bin noch relativ neu in Sachen Java (also noch lange kein routinierter Profi) und habe bei einem Projekt folgendes Problem:

Ich habe einen großen Datensatz von einem Sensor (zb ein Temperatursensor) der ungefähr so aussieht:

10
13
12
12
13
15
19
20
23
23
24
21
18
16
...

Die bei den Werten handelt es sich natürlich um Temperaturen und wie man etwas erkennen kann soll das zb ein Tagesablauf sein. Morgens kalt --> dann wärmer --> nachmittags warm --> dann kühlt es wieder ab.

Wie ist es mir möglich in diesem Datensatz eine gewisse Wiederholung sprich Periode zu erkennen?
Ich bräuchte einen Algorithmus der von alleine erkennt, das sich im Datensatz ein gewisses Verhalten wiederholt so dass ich dann sozusagen mit diesen Mustern weiterarbeiten kann.

Ich hab schon jede Menge gegoogelt finde aber bisher keine wirkliche Lösung.

Gibt es eventuell einen Algorithmus, oder mathematische vorgehensweise wie man das realisieren könnte?

Ich bin mit meinem Latein leider am Ende :(.

Ich hoffe ihr könnt mir helfen :)

Vielen Dank im Voraus
mfg Kumaro
 

Marco13

Top Contributor
Allgemein ist das kaum möglich. Erstens muss man sich überlegen, wie man "DAS", was man da automatisch finden will, beschreiben könnte, und zweitens (und das kann das Größere Problem bzw. die Größere Einschränkung sein) muss man sagen, wonach man sucht. Als Beispiel: Soll sowas wie diese Kurve "erkannt" werden:
220px-Sinc_function_%28normalized%29.svg.png

Und wie soll sich das "Erkennen" diser Kurve äußern?

Das einzige, was mir in dieser Richtung einfallen würde, wäre das, wo auch das Bild herstammt, nämlich eine Fourier transform - Wikipedia, the free encyclopedia - aber auch nichts konkretes, nur der Grundgedanke, "irgendwelche Frequenzen zu erkennen" (und das schüttelt man auch nicht aus dem Ärmel...)
 
G

Gast2

Gast
Afaik gibt es da keine fertigen Java Bibliotheken für so Sachen.
Mir bekannte Umgebungen, mit denen man solche Sachen machen kann sind halt Matlab/Simulink bzw. LabView. Aber die kosten auch richtig Schotter (>xTausend €) wenn man damit wirklich vernünftig arbeiten will.

Wenns also Java sein muss kommst du ums selber programmieren der Mathematik wohl nicht drum rum. Falls es eine bibliothek gibt die sowas kann kostet diese mit an Sicherheit grenzender Wahrscheinlichkeit ne Menge Geld.

[edit]Ich glaub für Matlab gibts ne Schnittstelle, sodass man die Matlab Algos aus Java heraus ansprechen kann. Ist aber sau teuer und kostet extra wenn mans releasen will.[/edit]
 

Kumaro

Mitglied
mh danke erst mal für eure Antworten.
Das ich es selber Programmieren muss dachte ich mir schon nur fehlt mir gerade auch das theoretische Wissen wie man an die Sache rangehen könnte. Und ohne Theorie keine Umsetzung ^^.

@Marco13: danke werd ich mir mal genauer anschauen.
 

TheWhiteShadow

Bekanntes Mitglied
Eigentlich brauchst du keine Fourier-Transform dafür, da du ja nicht die Frequenzanteile sondern die Schwingung als Ganzes betrachten willst.
Überleg dir doch wie DU dieses Verlauf analysiert hast.

Was haben alle Schwingung ungeachtet der Frequenz und Amplitude?
Sie haben Min Und Max-Werte und die kannst du mit einfachen Regeln registrieren.
z.B. merke immer den kleinsten Wert und suche solange weiter, bis der aktuelle Wert über 3°C größer ist.
Der gemerkte Wert ist nun mit Sicherheit das Tagesminimum.
So kommst du über kleine Wetterschwankungen aber nicht über den Mittagsberg.

Wenn du das Zeitintervall der einzelnen Messungen kennst, hast du die Tagesperiode ja bereits.
Darauf aufbauend kannst du diverse Analysen ohne komplexe Mathematik machen.
 

parabool

Bekanntes Mitglied
Ein in sehr einfacher Ansatz: die (oberen) Umkehrpunkte feststellen und so kannst Du dann den Abstand (P) zwischen diesen errechen und eine Peridizität erkennen.

Allerdings müsste man Ausreißer, wie z.B. die 13 am Anfang, "wegbügeln", Negativwerte berücksichtigen, Minima usw...


Java:
public class Test {
	public static void main(String[] args) {
		int[] arr = { 10, 13, 12, 12, 13, 15, 19, 20, 23, 23, 24, 21, 18, 16};
		int p = 0;
		for (int i = 1; i < arr.length - 1; i++) 
		{
			if ((arr[i] - arr[i - 1] > 0) && (arr[i] - arr[i + 1] > 0)) 
			{
				System.out.println("M(" + i + ")=" + arr[i]);
				if (i % 2 == 0) 
				{
					System.out.println("P=" + (i - p));
				}
				p = i;
			}
		}
	}
}

Ist nur eine Idee.
 
Zuletzt bearbeitet:

Stelufl

Mitglied
Das ist ein Basisthema der Statistik. Deskriptive Statistik. Siehe: Portal:Statistik/Themen2 ? Wikipedia

Z. B. Zusammenhang zwischen Uhrzeit und Temperatur ermitteln: Korrelation.

Da wirst du dich wohl oder übel etwas reinfuchsen müssen. Aber halb so wild: Das Thema ist sehr interessant.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Permutation mit Wiederholungen Allgemeine Java-Themen 10
B Wiederholungen Allgemeine Java-Themen 2
M Datensatz auf ein bestimmten Parameter einzugrenzen Allgemeine Java-Themen 11
P [Webdriver] einen Datensatz signieren Allgemeine Java-Themen 0
A Java - Suche nach Datensatz mit DateChooser Allgemeine Java-Themen 0
G WindowAdapter - Datensatz wird nicht komplett gespeichert Allgemeine Java-Themen 7
K Bildschirm auslesen/ Text erkennen Allgemeine Java-Themen 5
I Best Practice Kreise erkennen Allgemeine Java-Themen 1
N Erkennen eines Programs Allgemeine Java-Themen 2
P Strukturänderungen/abnormalien in Logfiles automatisch erkennen Allgemeine Java-Themen 5
A 2D-Grafik Einfachster Ansatz, um sich wiederholende Figur in einem 2D-Image zu erkennen Allgemeine Java-Themen 1
T Java Windows sounds erkennen Allgemeine Java-Themen 1
M Backslash erkennen Allgemeine Java-Themen 4
D Flasche Eingabe erkennen Allgemeine Java-Themen 4
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
I Datei zugriffe erkennen Allgemeine Java-Themen 25
A Großbuchstaben erkennen (Prozente) Allgemeine Java-Themen 2
U Erkennen, ob PC benutzt wird Allgemeine Java-Themen 4
B Erkennen, wann Prozess beendet ist, dann Thread beenden. Allgemeine Java-Themen 6
S Generellen MausKlick am PC erkennen Allgemeine Java-Themen 1
J Erkennen, ob Programm in JAR (neues Problem) Allgemeine Java-Themen 7
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
T Sechsecke, erkennen von bestimmten Werten Allgemeine Java-Themen 9
M Erkennen, in welcher Methode sich die VM befindet Allgemeine Java-Themen 6
Hoppelmann "Variable" in String erkennen Allgemeine Java-Themen 2
D IP / Domain in einem String erkennen Allgemeine Java-Themen 2
J jexcelapi - Erkennen von Sheets Allgemeine Java-Themen 3
B Mausbewegung im Thread erkennen (hoch/runter) Allgemeine Java-Themen 6
K Quadrat in einem Bild erkennen Allgemeine Java-Themen 33
D Regex Raute erkennen Allgemeine Java-Themen 2
F Groovy Erkennen geometrischer Formen in einem Kantenbild Allgemeine Java-Themen 4
S Wörter ohne Leerzeichen erkennen Allgemeine Java-Themen 5
M Festplatte am Namen erkennen Allgemeine Java-Themen 2
A Erkennen welches Fenster bei windowDeactivated aktiviert wird? Allgemeine Java-Themen 2
C Reguläre Ausrücke Punkte im Satz richtig erkennen Allgemeine Java-Themen 6
J Exe Datei in Java erkennen??? Allgemeine Java-Themen 4
P Netzlaufwerke erkennen Allgemeine Java-Themen 3
H File Attribut bzw Link erkennen Allgemeine Java-Themen 5
DamienX Debug Modus zur Laufzeit erkennen Allgemeine Java-Themen 3
data89 Barcodes in Bild erkennen Allgemeine Java-Themen 17
G Wechseldatenträger erkennen Allgemeine Java-Themen 5
T Shapes vergleichen? Zeichen erkennen? Allgemeine Java-Themen 7
Daniel_L RTF - Format aus Zwischenablage erkennen und "einlesen"? Allgemeine Java-Themen 5
B Zeilenumbruch erkennen Allgemeine Java-Themen 22
H Dateiende erkennen, wie? Allgemeine Java-Themen 7
S Dateiart erkennen Allgemeine Java-Themen 13
X Position eines Gegenstandes über Webcam erkennen Allgemeine Java-Themen 11
S unter UNIX - (symbolic) links erkennen? Allgemeine Java-Themen 12
D Datum korrekt erkennen Allgemeine Java-Themen 27
G Stringformen erkennen Allgemeine Java-Themen 8
N Endlosschleifen automatisiert erkennen (Code oder Laufzeit)? Allgemeine Java-Themen 6
G Größte zusammenhängende Fläche erkennen Allgemeine Java-Themen 3
K ersten programmstart erkennen Allgemeine Java-Themen 7
S JTree selektion erkennen und drauf reagieren Allgemeine Java-Themen 2
E Regexfrage (' erkennen) Allgemeine Java-Themen 4
C WindowStyle von Windows erkennen. Allgemeine Java-Themen 3
J Erkennen aus welchem Pfad das Jar gestartet wurde Allgemeine Java-Themen 6
B Erkennen welche Objekte den Heap verbrauchen? Allgemeine Java-Themen 2
MQue JButton erkennen Allgemeine Java-Themen 2
V Erkennen ob das Programm aus Jar File geladen wurde Allgemeine Java-Themen 9
T Einfachen Ton erkennen Allgemeine Java-Themen 7
R Hinzufügen von Dateien in einem Verzeichniss Auto. erkennen! Allgemeine Java-Themen 15
L objekte erkennen? Allgemeine Java-Themen 9
M Encoding automatisch erkennen Allgemeine Java-Themen 4
J Programmteile erkennen? Allgemeine Java-Themen 4
H Exception erkennen Allgemeine Java-Themen 10
S Farbe erkennen! Allgemeine Java-Themen 3
H existierende dateien erkennen Allgemeine Java-Themen 9
Natorion Erkennen ob das Programm mittels Jar-Datei oder class . Allgemeine Java-Themen 9
A Endlosschleifen automatisch erkennen Allgemeine Java-Themen 6
G String als Zahl erkennen Allgemeine Java-Themen 19

Ähnliche Java Themen

Neue Themen


Oben