|
|
3D-Plot alternative zu meshgrid? |
|
A_Br |
Forum-Newbie
|
|
Beiträge: 1
|
|
|
|
Anmeldedatum: 13.05.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.05.2014, 20:45
Titel: 3D-Plot alternative zu meshgrid?
|
|
|
|
|
Hallo liebe User,
dies ist mein erster Forumsbeitrag.
Ich versuche das Problem so einfach und übersichtlich wie möglich darzustellen.
Ich habe folgendes Problem:
Das Ziel ist die Darstellung einer Fläche mittels 3D Plot.
Diese Fläche soll sich in Abhängigkeit der Parameter u und phi_1 aus der folgenden Gleichung ergeben:
F2(u,phi_1)= Vektor2 + Matrix2 * Vektor1
(Anmerkung: Es handelt sich je um einen 3 Zeilen Vektor, sowie eine 3x3 Matrix; alle Elemente der Matrix, sowie der Vektoren bestehen aus Berechnungen die von phi_1 und/oder u abhängig sind)
Mein erster Ansatz war einen 3D Plot mittel des
Befehlt zu erzeugen.
Da die somit aus der obigen Formel entstehenden Formeln sehr lang und kompliziert werden habe ich diesen Ansatz verworfen und Versucht mir mittels
Schleifen weiter zu helfen, quasi den
Befehl durch diese zu ersetzen.
In der Ersten Schleife durchlaufe ich den Parameter u in der zweiten den Parameter phi_1.
Das Resultat für F2 ist immer ein Vektor.
Insgesamt stellt mich die gesamte Darstellung vor große Probleme.
Zunächst bin ich mir nicht sicher ob die Idee mittels Schleifen überhaupt mit vertretbarem Rechenaufwand realisierbar ist.
Desweiteren werden mit jedem Schleifendurchlauf die aktuellen Vektoren überschrieben. Allerdings benötige ich jeden einzelnen für die letztendliche Flächendarstellung.
Und zum Schluss habe ich aktuell keine Idee wie ich diese Vielzahl an Vektoren in einem Plot als Fläche darstellen kann.
Zum Schluss mein erste Ansatz für die Schleife
Ich hoffe das ich alles angemessen erläutert habe.
Ich bin mir sicher jemand mit ein wenig mehr Erfahrung als ich kann mir schnell weiterhelfen.
Liebe Grüße
|
|
|
|
|
Nras |
Forum-Meister
|
|
Beiträge: 608
|
|
|
|
Anmeldedatum: 21.02.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.12.0.635 (R2011a)
|
|
|
|
|
|
Verfasst am: 13.05.2014, 22:47
Titel:
|
|
|
|
|
Hallo,
komplett ohne auf deinen geschriebenen Code eingehen zu wollen, folgendes zum Titel:
meshgrid() ist kein Plotbefehl, sondern erzeugt dir ein regelmäßiges Gitter zu den Vektoren im Argument. Ich glaube, das weißt du, aber der Titel sieht so irgendwie komisch aus
Zitat: |
Da die somit aus der obigen Formel entstehenden Formeln sehr lang und kompliziert werden habe ich diesen Ansatz verworfen und Versucht mir mittels |
Arbeiten mit meshgrid() erfordern meiner Meinung nach oft ziemlichen Hirnschmalz, den Zeitaufwand dafür muss man durch die Vektorisierung auch erst mal wieder reinholen. Manchmal tut es einfach auch die gute, alte doppelte for-Schleife.
Zitat: |
Das Ziel ist die Darstellung einer Fläche mittels 3D Plot. |
Als Fläche verstehe ich für gewöhnlich skalare Felder, die stellt man gerne mal mit mesh(), surf() oder contour() dar. Es finden sich ziemlich viele Tutorials zur Kombination von meshgrid() mit einem der obigen Darstellungsmöglichkeiten.
Zitat: |
Und zum Schluss habe ich aktuell keine Idee wie ich diese Vielzahl an Vektoren in einem Plot als Fläche darstellen kann. |
Um aber vektorwertige Felder (beispielsweise ein Geschwindigkeitsfeld mit 2 Raumrichtungen und einen Wert für Geschwindigkeit selbst) zu plotten, könntest du dir quiver() ansehen. Wenn die Größen in dem Vektor nicht so zusammenhängen, bin ich aber auch überfragt und an einer Antwort interessiert .
Wenn es vektoriell nicht klappt, hier noch zwei Tipps:
Eine Rechenzeiteinsparung solltest du erhalten, indem du die beiden Schleifen vertauschst, denn F2Matrix und F2Vektor hängen nur von phi, also nicht von u ab, und werden somit nur ein mal statt für jedes u erneut berechnet.
Soetwas wie cos(u+phi_1) oder sin(u+phi_1) berechnest du recht häufig in der Formel. Es kann sich lohnen, das ein mal zu berechnen und in einer Variablen abzuspeichern und dann nur noch aufzurufen. Kann gut sein, dass das intern sowieso erledigt wird - vllt aber auch nicht.
Zitat: |
Desweiteren werden mit jedem Schleifendurchlauf die aktuellen Vektoren überschrieben. Allerdings benötige ich jeden einzelnen für die letztendliche Flächendarstellung. |
Damit dein Ergebnisvektor nicht immer überschrieben wird, musst du das Ergebnis nur noch abspeichern. Ich habe gerade kein Matlab hier, aber in etwa so:
Viele Grüße,
Nras.
|
|
|
|
|
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.
|
|