|
|
Finde eine Kurve, die 2 Datenmengen möglichst gur trennt |
|
chimperator |

Forum-Anfänger
|
 |
Beiträge: 30
|
 |
|
 |
Anmeldedatum: 17.04.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.10.2015, 13:14
Titel: Finde eine Kurve, die 2 Datenmengen möglichst gur trennt
|
 |
Hey Leute,
also ich habe 2 Datenmengen, die durch eine Kurve möglichst gut voneinander getrennt werden sollen, jedoch nihct im least square sinne. Es geht nur darum dass möglichst viele schwarze Kreise über und möglichst viele blaue Kreuze unter der Kurve liegen.
Gibt es dafür in Matlab einen besonderen Befehl?
Ansonsten würd ich probieren und einfach immer schauen wo die Punkte liegen.... aber das wäre sehr umständlich und ich kann mir gut vorstellen, dass es in matlab eine Funktion gibt, die dieses Problem optimiert.
Vielen Dank schonmal
Beschreibung: |
|
 Download |
Dateiname: |
Daten.png |
Dateigröße: |
20.26 KB |
Heruntergeladen: |
411 mal |
|
|
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 21.10.2015, 13:19
Titel:
|
 |
naja du kannst doch die summe der anzahl der punkte die deine bedingung nicht erfüllen minimieren. das würde ich jedenfalls versuchen. die form der kurve müsstest du allerdings vorgeben dazu.
_________________
richtig Fragen
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.10.2015, 23:48
Titel:
|
 |
Ergibt ein fürchterliches Zickzack, sollte aber funktionieren. Und ist auch nicht so arg kompliziert...
|
|
|
chimperator |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 30
|
 |
|
 |
Anmeldedatum: 17.04.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.10.2015, 07:47
Titel:
|
 |
Hallo =)
also ich brauhce uaf jeden Fall eine Kurve dir relativv gerade ist, also die Zickzack lösung geht leider nicht.
Daher wollte ich so wie so einen Ansatz wie ihn Winkow vorgeschlagen hat versuchen.
Aber wie mache ich das? Gibt es denn da eine besondere Funktion die mir so etwas macht?
Liebe Grüße und vielen Dank
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 23.10.2015, 08:37
Titel:
|
 |
naja was hast du dir denn schon zum thema minimieren und curvefitting angeguckt?
welche toolboxen hast du? ich würde mal
fminsearch
ga
oder
patternsearch
versuchen. ob das funktioniert hängt aber auch ein wenig von deinen daten ab und wie gut du die randbedingungen wählst.
sowas in der art:
_________________
richtig Fragen
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 23.10.2015, 09:10
Titel:
|
 |
Hallo chimperator,
"Relativ gerade" gibt es nicht. Zunächst brauchst Du eine Entscheidung, welche Anforderungen Du genau an die Kurve stellst. Es gibt unendlich viele verschiedene Kurven, die die Punkte nach unendlichen vielen verschiedenen Kriterien teilen. Das Kriterium muss man deshalb auch zunächst selbst bestimmen. Erst danach kann ein Minimierungswerkzeug die Parameter der Kurve bestimmen.
Du kannst eine Gerade versuchen, dann Polygonzüge mit 2 bis 20 Strecken, oder einen kubischen Spline. Aber welches davon am besten zu den Erfordernissen passt, muss man je nach der physikalischen Natur des Problems festlegen.
"Relativ glatte" (nicht "gerade") Kurven gibt es übrigens auch nicht: Zu jeder durch endlich viele Punkte definierten nicht geraden Kurve gibt es eine Skalierung, in der sie eine "Zickzack-Linie" ist, also nicht differenzierbar. Man muss eine künstliche Grenze annehmen, ab der man einen Polygonzug als glatt ansieht.
Gruß, Jan
|
|
|
Epfi |

Forum-Meister
|
 |
Beiträge: 1.134
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.10.2015, 15:42
Titel:
|
 |
Jan S hat Folgendes geschrieben: |
Zu jeder durch endlich viele Punkte definierten nicht geraden Kurve gibt es eine Skalierung, in der sie eine "Zickzack-Linie" ist, also nicht differenzierbar. |
Da muss ich aber widersprechen. Eine Parabel ist durch drei Punkte definiert und in jeder Skalierung beliebig oft differenzierbar ;-)
Zum Problem: würde dann am ehesten mal mit einer Trenn-Geraden anfangen, weil bevor Du etwas definiert hast, was "ungefähr gerade" ist, vergeht auch beliebig viel Zeit. Wenn die Gerade dann nicht ausreicht, ändert sich der Code für andere Funktionsformen auch nicht mehr nennenswert.
Du solltest vielleicht auch überlegen, ob Du genau eine Funktion von x suchst, oder ob Du möglicherweise ein Spline willst.
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 24.10.2015, 15:53
Titel:
|
 |
Hallo Epfi,
Eine Parabel als mathematisches Objekt ist ganz wie Du sagst beliebig oft differenzierbar. Mir ging es hier um die numerische Darstellung der Kurve mit Zahlen, die mit begrenzter Genauigkeit dargestellt werden. Explizit gesagt hatte ich das aber nicht.
Man kann ab einer bestimmten Skalierung nicht mehr zwischen der Granularität durch das Zahlenformat und echten Unstetigkeiten unterscheiden.
Für den OP ist es aber eher nur von Belang, das "relativ gerade" zu vage ist.
Gruß, Jan
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|