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

Curve fitting toolbox: Geschlossene Kurve

 

Nicolas S.
Forum-Century

Forum-Century


Beiträge: 146
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 21.01.2011, 15:51     Titel: Curve fitting toolbox: Geschlossene Kurve
  Antworten mit Zitat      
Hallo zusammen,

ich habe gerade das Problem, daß ich aus einer zweidimensionalen Punktewolke eine irgendwie geartete geschlossene parametrische Kurve gewinnen will - am besten stückweise quadratische Polynome, aber ich bin da nicht wählerisch.

Die Punktewolke sieht aus wie im Anhang. Irgendwie bekomme ich mit der Fitting-Toolbox aber nur Funktionen der Art y=f(x) heraus, womit eine geschlossene Kurve ja nicht möglich ist.

Kennt jemand einen Ansatz?

Viele Grüße
Nicolas

Fitting.m
 Beschreibung:

Download
 Dateiname:  Fitting.m
 Dateigröße:  552 Bytes
 Heruntergeladen:  647 mal
Scatterplot.png
 Beschreibung:

Download
 Dateiname:  Scatterplot.png
 Dateigröße:  3.7 KB
 Heruntergeladen:  786 mal

_________________

--
The programmer suggested it.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.01.2011, 23:04     Titel:
  Antworten mit Zitat      
Hallo,

das Problem wurde in der Tat richtig erkannt. Jetzt ist nur die Frage, was für eine Art funktionalen Zusammenhang du denn in den Daten sehen willst.

Ich würde es so sehen, dass die (x,y)-Wert Kombination etwas bestimmtes erfüllen muss.
Beispiel: a*(x-x0)^2 + b*(y-y0)^2 = 1, eine Ellipse also.
Was man nun machen kann: die Parameter so fitten, dass diese Gleichung möglichst genau erfüllt ist.

Code:
p = nlinfit([sR, sC], ones(size(sR)), @model, [12, 15, 0.2, 0.2])


mit

Code:
function z = model(a, X)
z = a(3)*(X(:,1) - a(1)).^2 + a(4)*(X(:,2) - a(2)).^2;


Lässt sich natürlich dann genauso gut mit Curve Fitting Toolbox machen.
Zudem ist die Ellipse als Modell hier wohl zu grob; wenn dann müsste zumindest eine Rotation eingebaut sein. Ich hoffe jedoch, dass das einen Ansatzpunkt liefert.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Nicolas S.
Themenstarter

Forum-Century

Forum-Century


Beiträge: 146
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 04.02.2011, 15:09     Titel:
  Antworten mit Zitat      
Hallo Harald,
danke für die rasche Antwort. Sie hat mich auch den rechten Lösungspfad gesetzt (auch wenn der noch nicht ganz bis zum Ende gegangen ist).

Viele Grüße
Nicolas
_________________

--
The programmer suggested it.
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 - 2024 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.