WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Datenpunkte sinnvoll reduzieren

 

Trash_84
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 16.11.15
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 08.09.2017, 18:01     Titel: Datenpunkte sinnvoll reduzieren
  Antworten mit Zitat      
Hallo liebe Matlabfreunde

ich stehe derzeit vor dem Problem mit großen Datenmengen umzugehen.

Ich möchte die Datenpunkte gern sinnvoll reduzieren um zB. einen vernüftigen "surface-plot" darzustellen.

Ich habe hier im Forum schon verschiedene Möglichkeiten angeschaut, allerdings habe ich zu meiner Idee bisher noch keinen Ansatz gefunden.

Und zwar möchte ich gern Datenpunkte durch Mittelwerte ersetzen und die Anzahl der zu mittelnden Werte über eine maximale absolute Abweichung definieren. Das heißt, wenn zB. die Messwerte lange um den Wert 0,5 "Schwingen" dann möchte ich viele Werte mitteln und durch eben den Mittelwert ersetzen, wenn aber ein starker Anstieg des Signals passiert, möchte ich die Werte nicht manipulieren.

Ich hoffe mein Ansatz ist einigermaßen verständlich Smile

Da ich mit Matlab noch nicht soviel Erfahrung habe, würde ich mich über Ideen und Vorschläge freuen wie ich das am besten umsetzen kann - bevor ich mich "stundenlang in eine Sackgasse programmiere" Confused

Ich danke euch auf jeden Fall schonmal - und wenn noch Fragen bestehen, werde ich die natürlich so schnell wie möglich beantworten!

Grüße -der Trash-
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2017, 20:00     Titel:
  Antworten mit Zitat      
Guck Dir mal den Douglas-Peucker-Algorithmus an. Der tut zwar nicht das, was Du beschrieben hast, aber das Ergebnis sieht sehr ähnlich aus (in meinem Kopf ;-)).

Musst aber mal gucken, ob der überhaupt für Flächen definiert ist. Je mehr ich darüber nachdenke, desto eher denke ich, dass das keinen Sinn macht. Aber für Linienzüge ist der wirklich sehr hilfreich...
Private Nachricht senden Benutzer-Profile anzeigen
 
Trash_84
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 16.11.15
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 09.09.2017, 07:49     Titel:
  Antworten mit Zitat      
Hey Epfi,

vielen Dank für den Hinweis! -der Ansatz klingt auf jeden Fall schon gut, da ich ja im ersten Schritt die Punkte verschiedener Linienzüge reduzieren will um dann im zweiten Schritt mit Hilfe von surf eine 3D-Darstellung zu erzeugen.

Ich werde mir das ab Mo dann mal genauer anschauen - vlt. gibt es ja bis dahin noch weitere Ideen / Ansätze von euch? Very Happy

Na dann mal allen hier ein schönes WE! Cool
Private Nachricht senden Benutzer-Profile anzeigen
 
Trash_84
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 16.11.15
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 09.09.2017, 17:20     Titel:
  Antworten mit Zitat      
Soo - jetzt hab ich mir den Ansatz mit dem Douglas-Peucker-Algorithmus doch schonmal angeschaut - und das funktioniert soweit auch echt gut! (ich konnte die Datenpunkte etwa um Faktor 40 reduzieren ohne nennenswerte Informationen der Messdaten zu verlieren. Laughing

Nun sind allerdings die Datenreihen zwar weiterhin noch zeitsynchron (also Anfang und Ende stimmen), allerdings nicht mehr gleich lang, bzw. gleichmäßig aufgeteilt...
-dh. Start und Endzeit stimmen weiterhin überein, nur dazwischen sind jetzt abhängig von dem Algorithmus mal mehr und mal weniger Datenpaare (Messwert, Zeit) eliminiert worden.

Um nun also einen 3D plot erstellen zu können müsste ich die Vektoren erst wieder alle auf die gleiche Länge bringen, wo mir jetzt ein bisschen "die Luft ausgeht"

Meine Idee ist im ersten Schritt alle Vektoren zu vergleichen und den längsten Vektor als Bezug zu nehmen.
Im zweiten Schritt würde ich jetzt bei allen anderen Vektoren soviele Elemente ergänzen bis die Länge gleich dem Bezugsvektor ist. -hier stellt sich mir jedoch die Frage wie ich das anstellen soll bzw. ob das grundsätzlich überhaupt geht / Sinn macht, oder ob ich dann am Ende wieder genauso viele Elemente habe wie vor der "Datenreduktiuon mit dem Algorithmus"?

Mein Problem ist, das ich nicht weiß nach welchem Prinzip ich die fehlenden Elemente in den "zu kurzen" Vektoren auffüllen kann. Und mir ist auch nicht ganz klar ob es das Problem löst wenn die Vektoren alle gleich lang sind, oder ob der x- (Zeit) Vektor für alle Vektoren identisch sein muss?

Am Ende will ich insgesamt 36 parallel gemessene Signalverläufe mit einem surfaceplot darstellen. Das ginge zwar grundsätzlich auch mit dem kompletten Datensatz - allerdings ist dann die Grafik äußerst unschön (siehe angehängte Grafiken für nur 2 Signalverläufe).

Ich würde mich echt freun vlt. nochmal einen Tipp von euch zu bekommen Smile

surf_oL.jpg
 Beschreibung:

Download
 Dateiname:  surf_oL.jpg
 Dateigröße:  17.96 KB
 Heruntergeladen:  419 mal
surf_mL.jpg
 Beschreibung:

Download
 Dateiname:  surf_mL.jpg
 Dateigröße:  21.81 KB
 Heruntergeladen:  428 mal
plot3.jpg
 Beschreibung:

Download
 Dateiname:  plot3.jpg
 Dateigröße:  24.22 KB
 Heruntergeladen:  417 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2017, 17:39     Titel:
  Antworten mit Zitat      
Ja, das Problem ist mir auch schon durch den Kopf geschossen. Spontan dachte ich mir: muss man halt alle x-Vektoren aneinanderhängen, nach Größe sortieren und alle doppelten rauswerfen. An all diesen Punkten soll jede Kurve einen Wert haben. Die fügt man durch lineare Interpolation (oder besser: mit Daten aus dem original-Datensatz) hinzu.

Und wenn man Pech hat, passiert genau das, was Du gesagt hast: am Ende hat man so viele Daten, wie vorher. Vielleicht schlaf ich nachher noch ne Runde und mir fällt ein, wie es dann weitergehen könnte ;-)
Private Nachricht senden Benutzer-Profile anzeigen
 
Trash_84
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 16.11.15
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 09.09.2017, 17:46     Titel:
  Antworten mit Zitat      
Hehe - ja ich wäre für nen Ansatz echt dankbar...

-primär geht es zwar jetzt erstmal "nur" um die grafische Darstellung, da die Messreihen aber eher länger werden und die Datenmengen dann sehr schnell auch sehr sehr groß werden, finde ich den Ansatz mit dem Algorithmus echt cool um auch die eigentliche Datenauswertung damit zu machen - wenn man jetzt nur noch am Ende wieder "vernüftige" Vektoren bekommen würde... Confused
Private Nachricht senden Benutzer-Profile anzeigen
 
Trash_84
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 16.11.15
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 09.09.2017, 18:37     Titel:
  Antworten mit Zitat      
Hey Epfi

ich hab den Ansatz "alle Zeitstempel in einen Vektor, sortieren, doppelte löschen" jetzt grad mal umgesetzt - und ich würde so am Ende dann nur noch auf eine Reduktion der Messpunkte um den Faktor 2 kommen (meine Testdaten waren jetzt etwa 230T Messpunkte für ca. 8 min, und so würde ich die MP auf etwa 107T reduzieren -was vor allem für eine gute "surf Darstellung" noch zuviel ist ...)

Hmm, na vlt. hast du (oder ein anderer Experte) ja noch eine Idee? Confused
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2017, 18:48     Titel:
  Antworten mit Zitat      
Wenn es nicht so ganz 100% korrekt sein muss, könntest Du x-Punkte, die eng beieinander liegen verschmelzen. In den Daten verschiebst Du die Punkte, die nicht exakt sondern nur so ungefähr auf einem der vorgegebenen x-Werte liegen auf genau diese x-Werte.

Dadurch wird alles ein bisschen falsch, aber wenn es um ein Bild geht, reicht es ja vielleicht aus...

Würde vorher aber mal den x-vektor plotten und schauen, ob es überhaupt viele Punkte gibt, die sehr eng nebeneinander liegen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Trash_84
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 16.11.15
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 09.09.2017, 19:23     Titel:
  Antworten mit Zitat      
ja "dicht" ist nun relativ... -und mit gutem Gewissen würden nochmal etwa 1000 Punkte wegfallen - da ist also nicht soviel zu holen...

Ich würde das Thema jetzt aber mal unter einer neuen Überschrift weiterführen, da ja die "sinnvolle Datenreduzierung" schonmal erledigt ist Wink

Soweit auf jeden Fall vielen Dank Epfi! Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2017, 19:47     Titel:
  Antworten mit Zitat      
Falls das alles nicht zielführend sein sollte: Du könntest auch zuerst mit Deinen gleich langen Ausgangslinienzügen die Fläche (drei Vektoren mit jeweils x, y und z-Wert) aufspannen und in jedem Punkt die Krümmung berechnen. Punkte mit kleiner Krümmung wirfst Du raus, Punkte mit großer Krümmung behältst Du bei.

Das kommt auch in etwas aufs gleiche raus und weil Du direkt mit der Fläche arbeitest, sollte es keinen Ärger mit falschen Vektorlängen geben...
Private Nachricht senden Benutzer-Profile anzeigen
 
Trash_84
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 16.11.15
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 09.09.2017, 19:54     Titel:
  Antworten mit Zitat      
Hmm das klingt auf jeden Fall nach nem interessanten Ansatz! -allerdings hab ich grad 0-Plan wie ich eine Krümmung in einem Punkt berechnen kann?

- da würde dann vermutlich die Länge der Ausgangsvektoren gleich bleiben, aber eben die grafische Darstellung besser werden oder? -was ja auf jeden Fall passen würde Smile

Vlt. kannst du mir - wenns nicht zu aufwändig ist, ein Beispiel geben wie ich das mit den Krümmungen angehen könnte?
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2017, 20:11     Titel:
  Antworten mit Zitat      
Habe gerade mal die Definition der Gausschen Krümmung gelesen (-> https://de.wikipedia.org/wiki/Gaußsche_Krümmung ) und ich glaube, die bringt uns nicht weiter. Sobald die Krümmung in einer Hauptrichtung (x, y) null ist, ist die Gaussche Krümmung in dem Punkt nämlich auch null. Wenn man sich als Fläche die Klippen von Calais vorstellt ( -> http://wordpress.fandf.ch/wp-conten.....eastbourn-und-seaford.jpg ) hätten die Punkte entlang der Kante alle die Krümmung 0 und würden rausfliegen. Das wäre nicht sehr zielführend.

Du könntest dann eher mit dem Maximum aus den Beträgen der Krümmungen entlang der x- und y- Achse rechnen. Wie man die Krümmung berechnet, findest Du z.B. hier: http://www.mathepedia.de/Kruemmung.aspx (Explizite Darstellung).

Wenn Du Daten mit Rauschen hast (aus einer Messung z.B.), könnte das ganze aber auch ziemlich schief gehen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Trash_84
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 16.11.15
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 09.09.2017, 20:24     Titel:
  Antworten mit Zitat      
Oh je - vielen Dank für deine Hilfe

Aber ich glaub da steht dann Aufwand und Nutzen nicht mehr wirklich im Verhältnis...
Ich werd jetzt mal Schluss machen, vlt. fällt mir ja morgen noch irgendwas ein Rolling Eyes
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2017, 21:32     Titel:
  Antworten mit Zitat      
Ein gutes Bild braucht eben seine Zeit :-)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.