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

Kurve durch Raum

 

TB16
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 03.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.06.2019, 11:37     Titel: Kurve durch Raum
  Antworten mit Zitat      
Ich habe einen Raum, der sich aus mehreren 3-D Körpern (4 Quadern) zusammen setzt und möchte durch diesen eine Kurve legen, die immer durch die Mittelpunkte des jewiligen Quaders geht. Habe mir gedacht ich probiere es mit einem Spline und setze die Mittelpunkte als Stützpunkte. Kann mir jemand sagen wie ich das umgesetzt bekomme?

Zusätzliche Schwierigkeit ist, dass der Spline an einer Fläche des 1. Quaders senkrecht starten soll und bei einer Fläche des letzten Quaders senkrecht enden soll.
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 13.06.2019, 18:10     Titel: Re: Kurve durch Raum
  Antworten mit Zitat      
Hallo TB16,

Bitte poste, wie deine Inputs definiert sind. Wenn man sich da erst mal etwas ausdenken muss, dass dann vielleicht gar nicht zu deiner Datenstruktur passt, wäre das vergeudete Zeit.
Was hast du bisher versucht und was genau klappt noch nicht?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
TB16
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 03.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.06.2019, 09:22     Titel:
  Antworten mit Zitat      
Da ich ein Matlab-Laie bin habe ich bisher noch nicht so viel ausprobiert. Mein aktueller Stand wäre dieser:
Code:
StartPoint =[x1;y1;z1];
HoldingPoint1 = [x2;y2;z2];
HoldingPoint2 = [x3;y3;z3];
EndPoint =[x4;y4;z4];

x = [x1 x2 x3 x4];
y = [y1 y2 y3 y4];
z = [z1 z2 z3 z4];

xi = x1:.1:x4;
yi = y1:.1:y4;
zi = z1:.1:z4;
V=1;
interp3(x,y,z,V,xi,yi,zi);

plot3(x,y,z,'o',xi,yi,zi)


Dabei treten die Fehler: Error using griddedInterpolant
The grid vectors do not define a grid of points that match the given values.
und:
Error in interp3
F=griddedInterpolant({X,Y,Z},V,method,extrap);

Liegt der Fehler bei der Definition von V? Dieses habe ich nämlich aufgrund eines fehlenden Wertes für interp3 so definiert und keine Ahnung was es darstellen soll.

Wenn ich bei interp3 das x,y,z in {} schreibe folgt der Fehler: Error using interp3 wrong number of input arguments.

bei den Tests setze ich für die x-, y-, z-werte beliebige Zahlen ein. Später wird der m-file in einer anderen Software genutzt und die Punkte werden von dieser gesetzt.

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.06.2019, 11:10     Titel:
  Antworten mit Zitat      
Hallo TB16,

Bei der Interpolation gibst du ein Gitter vor, auf dem die Daten vorliegen, und die Daten selbst. Das Gitter bestimmst du mit den 3 Vektoren, aber als Daten hast du nur ein skalares V=1 gesetzt. Sinnig ist das nicht: Wenn das 3D-Array überall den Wert 1 hat, werden er das auch sämtlichen interpolierten Punkten haben. Dann ist die Interpolation überflüssig.
So weit ich verstanden habe, möchtest du doch gar nichts interpolieren, sondern einen Spline durch Punkte legen. Man kann zwar auch mit Splines interpolieren, aber das ist eine ganz andere Aufgabe.

Zitat:
Liegt der Fehler bei der Definition von V? Dieses habe ich nämlich aufgrund eines fehlenden Wertes für interp3 so definiert und keine Ahnung was es darstellen soll.

Raten ist keine effiziente Programmier-Strategie.

Zitat:
Wenn ich bei interp3 das x,y,z in {} schreibe folgt der Fehler: Error using interp3 wrong number of input arguments.

Hierzu gibt es allerdings auch überhaupt keinen Grund. Die Inputs einfach mal als Cell-Array zusammen zu fassen, ist Herumstochern im Nebel. Lies lieber die Anleitung von interp3 um zu verstehen, was man hier wie eingibt. Und dann wirst du vermutlich herausfinden, dass du mit dem spline Befehl wohl besser aufgehoben bist.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
TB16
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 03.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2019, 08:32     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für den Hinweis. Habe es nun mit dem Befehl spline umgesetzt bekommen.

Nun habe ich nur noch zwei Fragen:

1. Weißt du, ob es möglich ist den erhaltenen Spline als Gleichung ausgegeben zu bekommen?

2. Kann ich den Spline an bestimmten Stellen tangential zu einer Ebene machen?

Danke für deine Hilfe!

GRuß TB16
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.06.2019, 17:35     Titel:
  Antworten mit Zitat      
Hallo TB16,

Der spline Befehl gibt ja die Koeffizienten der Polynome zurück. Was meinst du nun genau mit "als Gleichung"?

Zitat:
2. Kann ich den Spline an bestimmten Stellen tangential zu einer Ebene machen?

Wenn du die Spline-Polynome selbst erstellst, kannst du auch beliebige Steigungen vorgeben. Suche doch mal nach Code, um Splines selbst zu berechnen. Das gehört zur Anfängervorlesung in Numerik, dann hat das bestimmt auch jemand als Matlab-Code gepostet.

Gruß, Jan
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.