|
|
2D_Plot mit funktionalen Grenzen im Meshgrid |
|
Hans_Peter |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 19.03.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.03.2014, 01:37
Titel: 2D_Plot mit funktionalen Grenzen im Meshgrid
|
|
Hallo Zusammen,
ich taste mich derzeit langsam an das arbeiten mit MatLab ran und stehe momentan vor einigen Problemen. Bedeutet ich bin blutiger Anfänger.
Ich versuche für ein Projekt der Uni ein Vektorfeld ausschließlich in einem bestimmten durch eine 2 Funktionen abgegrenzen Gebiet darzustellen. Diese sind:
y_1=10./x
y_2=30./x
im Intervall 0<x<=10, 0<y<=10.
Die Vektoren sind gegeben durch
u=0,1*x
v=-0,1*y
Mein momentaner Ansatz besteht daraus das meshgrid auf die genannte Grenzen zu limitieren. Sieht momentan folgendermaßen aus:
[x,y] = meshgrid(0:x_step:10,y_1:y_step:y_2);
wobei die Schrittweite vorher definiert ist.
Leider führt dieser Ansatz nicht zum gewünschten Ergebnis.
Das Plotten wird mittel quiver(x,y,u,v) durchgeführt.
Mittlerweile ist mein Latein am Ende und ausgiebiges googln hat auch noch nicht den gewünschten Erfolg bereitet.
Ich hoffe ihr könnt mir weiterhelfen.
Lg Jan
|
|
|
|
|
Mmmartina |
Forum-Meister
|
|
Beiträge: 745
|
|
|
|
Anmeldedatum: 30.10.12
|
|
|
|
Wohnort: hier
|
|
|
|
Version: R2020a
|
|
|
|
|
|
Verfasst am: 19.03.2014, 14:15
Titel: Re: 2D_Plot mit funktionalen Grenzen im Meshgrid
|
|
Könntest du bitte ein lauffähiges Minimalbeispiel posten?
Was genau erwartest du, wie wäre das gewünschte Ergebnis?
Wenn ich nur die für mich nachvollziehbaren Infos rausziehe, komme darauf und das läuft:
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
|
|
|
Hans_Peter |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 19.03.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.03.2014, 15:16
Titel:
|
|
Hallo Martina,
der bisherige Code sieht folgendermaßen aus:
x_max = 10;
y_max = 10;
x_step = 0.2;
y_step = 0.2;
dim_x = (x_max)/x_step;
dim_y = (y_max)/y_step;
[x,y] = meshgrid(0:x_step:x_max,0:y_step:y_max);
a = 0.1;
u = zeros(dim_x+1,dim_y+1);
v = zeros(dim_x+1,dim_y+1);
u=a*x;
v=-a*y;
figure(1)
grid on
quiver(x,y,u,v)
axis tight
Dieser stellt das gesamte Vektorfeld dar (gleiches Ergebnis wie in deinem Code).
Was ich möchte ist, dass nicht das gesamte Vektorfeld dargestellt wird sondern nur innerhalb der folgenden Grenzen:
y=10/x und y=30/x
Zum besseren Verständnis, die Grenzen stellen die Wände eines Krümmers da in welchem eine Strömung stattfindet.
|
|
|
Mmmartina |
Forum-Meister
|
|
Beiträge: 745
|
|
|
|
Anmeldedatum: 30.10.12
|
|
|
|
Wohnort: hier
|
|
|
|
Version: R2020a
|
|
|
|
|
|
Verfasst am: 19.03.2014, 21:34
Titel:
|
|
Hans_Peter hat Folgendes geschrieben: |
Dieser stellt das gesamte Vektorfeld dar (gleiches Ergebnis wie in deinem Code).
Was ich möchte ist, dass nicht das gesamte Vektorfeld dargestellt wird sondern nur innerhalb der folgenden Grenzen:
y=10/x und y=30/x
Zum besseren Verständnis, die Grenzen stellen die Wände eines Krümmers da in welchem eine Strömung stattfindet. |
D.h. du möchtest ein Schräg verlaufendes "Band" als Bereich dargestellt haben?
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
|
|
|
Zoltan_Kull |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.03.2014, 21:46
Titel:
|
|
Hallo, ich sitzte im gleichen Kurs und muss also die oben genannte Aufgabe ebenfalls lösen.
@ Martina: Ja richtig. Dein "Band" ist quasi ein Rohr (im 2D Fall), durch das ein Gas (dargestellt durch die Vektorpfeile) strömt. Wie können die Vektorpfeile NUR im Rohr (also zwischen den beiden Graphen) dargestellt werden?
Danke
|
|
|
Nicolas |
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 12.09.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.03.2014, 22:42
Titel:
|
|
Hallo!
Die vorgehensweise, die zum Ziel führt ist die folgende:
Zunächst Matrizen erstellen, welche die X-Position und Y-Position jedes Wertes im Feld definieren, z.B. so:
Dann könnt ihr daraus mit hilfe eurer gegebenen Abhängigkeit das Vektorfeld berechnen, z.B. so:
Nun wollt ihr das Vektorfeld nur für einen Teilbereich der Matrix anzeigen, welcher zwei Bedingungen erfüllt, nämlich dass die y-Position innerhalb eines Intervalls liegt, welches wiederum von der x-Positon abhängig ist.
Deshalb berechnet ihr erstmal die Intervallgrenzen für jeden Wert des Vektorfeldes:
Anschließend könnt ihr eine Maske berechnen, die mittels Wahrheitswerten angibt, ob der jeweilige Eintrag des Vektorfeldes im Intervall liegt oder nicht:
Sodass ihr mit dem Aufruf, wie folgt euer gewünschtes Ergebnis erhaltet:
Freundliche Grüße,
Nicolas
|
|
|
Zoltan_Kull |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.03.2014, 23:49
Titel:
|
|
Hallo Nicolas,
vielen Dank, das hat geklappt und war sehr toll erklärt. Falls du noch etwas Zeit opfern könntest:
Neben dem Vektorfeld sollen die Stromlinien (mit streamslice) des durch das Rohr strömende Gas in einem weiteren Diagram dargestellt werden. Das habe ich hiermit realisiert und funktioniert soweit:
Zuletzt sollen auch die Stromlinien nur in der Begrenzung, die auch für das Vektorfeld galt, dargestellt/angezeigt werden.
Ich habe es mal hiermit versucht, aber in der entsprechenden figure wird nichts angezeigt:
Offensichtlich verhält sich streamslice vom input her anders als quiver?! Gibt es hier eine (schnelle, einfache) Lösung?
Vielen Dank!
|
|
|
Nicolas |
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 12.09.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.03.2014, 00:34
Titel:
|
|
Schau einmal in die Hilfe von streamslice.
Dort ist beschrieben, wie es möglich ist, Startpunkte der streamlines zu übergeben.
Das wird dich zum gewünschten Ergebnis führen.
Grüße,
Nicolas
|
|
|
Zoltan_Kull |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.03.2014, 02:11
Titel:
|
|
Leider bringt mich die Hilfe zu den streamslices nicht weiter. Ich weiß nicht, was mir die Startwerte für die Begrenzungen bringen. Wie bei den Vektoren oben, sollen nur die Stromlinien angezeigt werden, die zwischen
liegen.
Kannst du etwas genauer werden? :-/
Danke
|
|
|
Hans_Peter |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 19.03.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.03.2014, 19:05
Titel:
|
|
Herzlichen Dank für die Hilfe, konnte bis dahin alles lösen.
Allerdings stehe ich jetzt vor dem selben Problem wie mein Vorredner.
Ich habe versucht mit Hilfe von:
streamslice(x,y,u,v,startx,starty)
Die Startpunkte der Stromlinien festzulegen. Das führte allerdings zu einem Problem im Programm folgender Art.
Error using streamslice (line 138)
U,V,W must all be a 3D arrays.
Error in Name (line 4
streamslice(x,y,u,v,xs,10)
wobei 10 den Startpunkt in y-Richtung angibt und xs die variable Starposition in X-Richtung.
Mittlerweile bin ich umgestiegen auf eine For-Schleife und der streamline-Funktion, dies führt zwar zum gewünschte Ergebnis, allerdings ohne direction-arrows und ohne eine Einheitlichkeit innerhalb der Arbeit.
Zu meinen Fragen:
1. Ist es möglich gegebenen Sachverhalt mit der Streamslice-Funktion darzustellen?
2. Worin liegt der Unterschied in der Streamslice- und Streamline-Funktion?
Nochmal vielen Dank für die Hilfe und Zeit.
Lg Jan
|
|
|
|
|
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.
|
|