|
|
In einem Vektorfeld Fläche einbringen |
|
rickjames |

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 18.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.12.2010, 19:41
Titel: In einem Vektorfeld Fläche einbringen
|
 |
|
 |
|
Hallo
Zunächst muss ich euch warnen dass ich nur beschänkten Zugang zu Matlab habe und daher sehr viele theoretische Überlegungen angestellt habe, diese aber nicht sofort umsetzen konnte.
Los gehts:
Ich habe irgendein beliebiges Vektorfeld mitsamt den Daten der Startkoordinaten und den Daten der Vektoren dieser Startpunkte. Die Koordinaten der Startpunkte sind in x y und z gespeichert, welche jeweils mxmxm double sind. u v und w geben jedem Punkt in x y z eine Richtung.
Ich kann mir dieses Vektorfeld am besten durch quiver3(x,y,z,u,v,w) visualisieren.
#Jetzt wird es einfach: Ich will in den Graph des Vektorfeldes gerne eine begrenzte Fläche einfügen, wie etwa ein Quadrat der mit Seitenlänge 1. Es sollte komplett in mein Vektorfeld "eingetaucht" sein, aber ich kriege beides nicht hin. Ich kriege nur unbegrenze Flächen in meinen Graphen aber keine abgeschlossenen.
#Jetzt wird es spannend: Ich will die Vektoren des Vektorfeldes isolieren, welche auf dieser Fläche liegen. Die Daten müssten dann gewisse Lücken aufweisen, da das Vektorfeld nicht an jedem Punkt definiert ist. Ich habe vor diese Lücken durch Interpolation zu füllen. Mir ist klar dass ich die Lücken damit nicht fülle sondern nur die Abstände zwischen den Lücken verkleinere. Dies nehme ich in Kauf.
#Jetzt wird es kompliziert: Nun kommt curl(x,y,z,u,v,w) ins Spiel. Ich stelle mir das so vor, dass ich an jedem Startpunkt eines Vektors meines Vektorfeldes die Richtung und den Betrag des "Wirbels" erhalte. Dies möchte ich visualisieren, ich nehme an, dies sollte mit contour und pcolor möglich sein. Ich habe bereits bemerkt dass ich z.b. mit [a b c d]=curl(x,y,z,u,v,w) daten erhalte. Diese kann ich aber nicht interpretieren, ich habe der Hilfe entnommen, dass a b und c Koordinaten sind, und d wahrscheinlich eine Länge.
Sinn des Ganzen ist es, die "Wirbel" innerhalb dieser Fläche zu Summieren und mit der Summe der Wirbel um die Kanten dieser Fläche zu vergleichen.
Ich bin um jede Hilfe/Denkanstöße dankbar.
|
|
|
|
|
rickjames |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 18.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.12.2010, 21:06
Titel:
|
 |
Weiß niemand etwas dazu oder habe ich mich irgendwie undeutlich ausgedrückt?
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 19.12.2010, 00:04
Titel:
|
 |
Hallo rickjames,
Die meisten goMatlab-User sind am Samstag Abend offensichtlich unterwegs oder schauen fern.
Es ist nicht ganz einfach auf Dein Posting zu reagieren: Du stellst keine Frage. So ist die erste Idee, die mir dazu in den Kopf kommt:
Interessante Aufgabe! Implementier das doch mal. Vielleicht können wir Dir dann bei konkreten Fragen helfen.
Wie zeichnest Du denn eine unbegrenzte Fläche in Matlab? Wenn Du uns das zeigst, können wir vielleicht einen equivalenten PATCH-Befehl finden, der dann noch eine Umrandung hat.
Willkommen im Forum, Jan
|
|
|
rickjames |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 18.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.12.2010, 13:03
Titel:
|
 |
|
 |
|
Hallo!
Also ich poste hier mal wie weit ich bin und was ich noch will(also quasi meine Fragen)
Ich brauche irgendein beliebiges Vektorfeld. Nach kurzer Onlinesuche habe ich mich dafür entschieden:
[X,Y,Z]=ndgrid(-1:.25:1);
U=X.*(1-Y);
V=Y.*(1-X.*Z);
W=Z.*(1-Y);
quiver3(X,Y,Z,U,V,W);
%Jetzt habe ich ein Vektorfeld.
%Eine Oberfläche versuche ich bisher über:
hold on;
syms x y z;
Oberflaeche='x^2+y^2+z^2=5';
xRange=-0.5:.1:0.5;
yRange=-0.5:.1:0.5;
yRange=yRange';
z=solve(Oberflaeche,z);
z=z(1);
z=subs(subs(z,x,xRange),y,yRange);
surf(xRange,yRange,z);
das mit z=z(1) gefällt mir überhaupt nicht(mehrere lösungen für die gleichung), aber anders kann ich nicht substituieren.
Ich verschiebe nun diese Fläche in das Vektorfeld hinein indem ich manuell z.b. xRange=xRange-1.25; solange mache bis es irgendwann drin ist.
Frage: Wie kriege ich nun alle Vektoren die ihren Startpunkt AUF dieser Fläche haben? Wenn ich diese Sammlung von Vektoren erhalten habe würde ich sie gerne interpolieren(sinnvoll), sodass ich nicht insgesamt 200 Vektoren oder so erhalte sondern um Einiges mehr(~ 20 000). Eventuell wäre es auch geschickter zuerst zu interpolieren und danach die Vektoren zu suchen die auf der Fläche liegen...
|
|
|
|
|
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.
|
|