Ich will aus 10 oder mehr Punkten (x,y,z) eine Trajektorie bilden. Dabei würde ich gerne diese 10 Punkte eingeben und dann auswählen wie interpoliert wird zwischen den Punkten (also spline, linear, etc.). Das selbst zu machen stellt mich vor große Schwierigkeiten, da ich noch recht neu in MATLAB bin und mich nicht sehr gut mit den Funktionen auskenne.
Meine Frage: Kennt jemand Funktionen oder Tools mit denen ich das ordentlich strukturieren und aufbauen kann ohne 1000 Zeilen Code zu schreiben? Ich hab jetzt schon mehrere Ansätze abgebrochen, weil ich nicht wirklich sehen konnte, dass das irgendwo hinführt..
ich würde eine Funktion mit Eingabeargumenten x, y, z und Interpolationsmethode sowie dem Gitter und Rückgabeargumenten interpolierte Werte schreiben.
Die Frage ist aber, ob du hier überhaupt eine eigene Funktion schreiben musst und nicht stattdessen z.B.
griddata
oder
interpn
verwenden kannst.
Grundsätzlich hilft es, wenn du einen oder mehrere Versuche postest. Auf 1000 Zeilen oder auch nur die Nähe davon sollte man hier wirklich nicht kommen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Das ist mein Programm jetzt. Was ich jetzt aber einfach nicht hinkriege, ist, dass ich zwischen den Punkten unterschiedliche Interpolationen anwende. Und ich will nicht für jeden Vektor das einzeln runterschreiben, sondern halt entweder variabel halten oder zumindest kompakt, sonst verliert man da viel zu schnell den überblick..
für unterschiedliche Interpolationen sehe ich keine andere Möglichkeit als die Vektoren in die Bereiche aufzuspalten, die Interpolation jeweils darauf anzuwenden, und das dann wieder zusammenzufügen.
Als zweites Argument kannst du bei interp1 auch eine Matrix von Spaltenvektoren angeben und bekommst die interpolierte Matrix zurück
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Ok das müsste glaube ich so funktionieren, aber jetzt habe ich Vektoren in meinem Array stehen, wie kann ich die denn dann plotten, bzw. zusammenfügen, weil so wäre es jetzt nicht richtig, da ich jetzt die Vektoren wie Punkte sehe und demensprechend der plot falsch gemacht wird..
Code:
% Punkte
x = [0,10,10,0,0];
y = [0,0,10,10,0];
z = [0,0,0,0,0];
t = [1,2,3,4,5];
tgroesse = size(t);
tgroesse = tgroesse(2);
%Vektoren erstellen
vek = zeros(3, tgroesse);
for nn = t(1):1:t(end-1)
vek(:,1) = 0;
vek(1,nn+1) = x(nn+1) - x(nn);
vek(2,nn+1) = y(nn+1) - y(nn);
vek(3,nn+1) = z(nn+1) - z(nn);
end
ich verstehe die Frage nicht.
Ein Problem, das ich sehe: du plottest die Größe an sich und die Differenzen / Ableitungen in ein Bild. Das wird allgemein nicht funktionieren.
Mit dem diff-Befehl kannst du dir die nn-Schleife sparen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Ich habe jetzt ne Matrix mit Vektoren. Wenn ich die plotte kommt da aber natüricht das raus was ich will, also die Vektoren nacheinander, sondern eben die Vektoren als Punkte.. Das mit dem diff probier ich gleichmal aus
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Die Vektoren werden ja alle vom 0 Punkt aus geplottet, aber bei mir sollten Sie an der Spitze des vorherigen Vektors anfangen. Ich will ja eine Bahn aus Vektoren beschreiben
dann solltest du cumsum verwenden, um das aufzuaddieren, und die nun kleinere Schrittweite berücksichtigen.
Damit machst du quasi die Differenzenbildung rückgängig. Mir ist aber nach wie vor nicht klar, warum du überhaupt die Differenzenbildung vornimmst.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.