Verfasst am: 22.09.2015, 15:15
Titel: 3D Curve Fitting Fehlermeldung
Hallo!
Ich bin ein blutiger Matlab Anfänger und ich muss für ein Projekt einen 3 dimensionalen Pfad erstellen. Dazu habe ich eine Reihe von X, Y, Z Vektoren erstellt und den besagten Pfad durch einzelne Punkte beschrieben.
Durch diesen (oder ähnlichen) Pfad möchte ich gerne einen Interpolationsspline legen. Im Curve Fitting Tool Menü kommt allerdings die Fehlermeldung
Duplicate x-y data points detected: using average of the z values.
Verstehe ich das richtig, dass sich bei X und Y Koordinaten die gleichen Punkte mehrmals befinden und daher eine Interpolation nicht möglich sei? Wie könnte man das umgehen? Mein Ziel ist es am Ende eine Interpolationsformel zu bekommen, die meinen 3d Pfad am besten beschreibt. Könnte man den ganzen Pfad (in Wirklichkeit 1x223 double Zahlen) in Bereiche aufteilen, damit sich die Koordinaten nicht wiederholen? Obwohl die Frage für Matlab Experten vermutlich ganz einfach ist, stehe ich gerade etwas auf dem Schlauch.
wenn du eine funktion haben willst musst du ja eine eindeutige abbildung haben. x und y bilden in deinem fall die basis und z ist das was ausgerechnet wird. wenn du aber zum selben paar x y unterschiedliche z werte hast kann man da ja nicht interpolieren. woher soll matlab wissen was da gemacht werden soll?
vielleicht kann dir
cscvn
helfen.
_________________
Ich verstehe, dass x und y Werte unterschiedliche z Werte haben müssen für eine Interpolation, aber was meinst du denn mit der Basis?
Nach meinem Verständnis sind X,Y,Z einfach Koordinaten für einen Punkt in einem 3d Koordinatensystem
Verstehe ich dich richtig, dass du Punkte mit den Koordinaten p6=(5,8,2) und p7=(5,8,3) bei gleichen X und Y Werte unterschiedliche Z Werte besitzen, was de facto das Problem ist?
Könnte ich als workaround einfach statt p7=(5,8,3) p7=(5, 8, 3.0000001) nehmen? Was den Verlauf des Pfades ja sehr unwesentlich verändern würde.
Ich habe cscnv nachgeschlagen und anhand des Beispiels:
Code:
points=[0110-1-100; 001210-1-2];
fnplt(cscvn(points)); hold on,
plot(points(1,:),points(2,:),'o'), hold off
konnte ich meine Punkte eintragen und einen 3d Plot (bestehend aus kubischen Splines) erstellen. Kann ich zu diesem Spline Verlauf irgendwie die Gleichung aufrufen lassen?
So ganz verstehe ich den Unterschied nicht zwischen dem einfachen
Code:
plot3(x,y,z,'r-ö') Befehl und plot3(points(1,:),points(2,:),points(3,:), 'o'), hold off nicht.
Verstehe ich dich richtig, dass du Punkte mit den Koordinaten p6=(5,8,2) und p7=(5,8,3) bei gleichen X und Y Werte unterschiedliche Z Werte besitzen, was de facto das Problem ist?
ja
f(5,8)
was soll da rauskommen? 2 oder 3? wie soll matlab interpolieren wenn er zum selben punkt 2 werte hat?
Zitat:
Könnte ich als workaround einfach statt p7=(5,8,3) p7=(5, 8, 3.0000001)
nein.. ist das selbe problem z ist egal. aber unterschiedliche z werte zu den selben x und y werten ist das problem.
_________________
Ok, das habe ich verstanden. Vielen Dank!
Und wie ist das jetzt mit cscvn? Ich fange erst an mich in matlab einzuarbeiten und verstehe den Unterschied zwischen
Code:
plot(points(1,:),points(2,:),'o'), hold off und plot3(X, Y, Z)
Kann ich zu diesem Spline Verlauf die entsprechende Gleichung anzeigen lassen?
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
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.