3D - Plot in Matlab

Neue Frage »

Tremonia Auf diesen Beitrag antworten »
3D - Plot in Matlab
Ich möchte die Parabel
x = -5: 0.01: 5;
y = -(x.^2);

Dreidimensional darstellen. So das jetzt noch um die y-Achse gedreht wird. Also die Draufsicht eine Parabel ist und der Querschnitt ein Kreis. So ne Art Fingerhut.

also so: fplot(x, y, z)
z = ?
nur wie soll da jetzt z aussehen?

Kann mir jemand weiterhelfen?

Vielen Dank
Tremonia
Airblader Auf diesen Beitrag antworten »

Ich denke, der Befehl cylinder dürfte dir weiterhelfen.

air
Tremonia Auf diesen Beitrag antworten »

Zitat:
Original von Airblader
Ich denke, der Befehl cylinder dürfte dir weiterhelfen.

air


Ich habs mal so probiert:

code:
1:
2:
3:
4:
5:
x = -5:0.01:5;
y = x.^2;
[X, Y] = cylinder(y)
surf(X,Y)
 


Allerdings ist das kein Paraboloide. y gibt doch den Radius an? Muss der den keine Parabel sein?
Airblader Auf diesen Beitrag antworten »

Schau dir das zweite Beispiel auf der verlinkten Seite nochmal genauer an.
Wenn du noch ein

code:
1:
shading interp


anhängst, sieht es auch etwas schöner aus.

Edit: Habe nochmal was entfernt, da es nicht gestimmt hat.

air
Airblader Auf diesen Beitrag antworten »

Wie wäre es alternativ hiermit?

code:
1:
2:
3:
4:
5:
6:
7:
val = 3;

[X, Y] = meshgrid(-val:0.01:val, -val:0.01:val);
Z = X.^2 + Y.^2;
surf(X, Y, Z);
shading interp


Da man einfach ein Mesh entspr. verzieht, ist es halt nicht oben "glatt". Das kannst du aber beheben, indem du vor dem Plotten noch

code:
1:
Z(Z > val^2) = nan;


einschiebst ... dann ist der Plot oben aber leicht ausgefranzt.

air
Airblader Auf diesen Beitrag antworten »

So, jetzt aber. Hier findet sich wohl die beste Lösung:

code:
1:
2:
3:
4:
5:
[r,the]=meshgrid([0:0.1:5],[0:pi/10:2*pi]);
x=r.*cos(the);
y=r.*sin(the);
z=x.^2+y.^2;
surf(x,y,z);


air
 
 
Tremonia Auf diesen Beitrag antworten »

Zitat:
Original von Airblader
So, jetzt aber. Hier findet sich wohl die beste Lösung:

code:
1:
2:
3:
4:
5:
[r,the]=meshgrid([0:0.1:5],[0:pi/10:2*pi]);
x=r.*cos(the);
y=r.*sin(the);
z=x.^2+y.^2;
surf(x,y,z);


air


@ Airblader : Besten Dank! Freude Habe das noch ein wenig abgeändert
code:
1:
2:
3:
4:
5:
6:
7:
i = 3;
[r,t] = meshgrid([-i:0.1:i],[-1:0.1:i]);
x = r.* cos(t);
y = r.* sin(t);
z = x.^2 + y.^2;
z1 = -z +10;   % damit nach unten geöffnet und bei 0 beginnent
surf(x,y,z1)

So hatte ich mir das mal vorgestellt.
Airblader Auf diesen Beitrag antworten »

Freude

Danke für die Rückmeldung.

air
Tremonia Auf diesen Beitrag antworten »

Ich bin dabei folgendes Problem zu lösen: 2 Kugeln in Matlab auf einer Höhe nur brauche ich ja jetzt quasi einen liegenden Zylinder. Bei dem Parabelzylinder wurde mit Z ja immer ein Kreis berechnet. Dadurch das jeder Kreis unterschiedlich groß ist entsteht dann der Paraboliede. Aber wie kann ich ohne den cylinder-Befehl einen Zylinder zeichnen. Ich brauche doch einen konstanten Vektor dann für x,y?
code:
1:
2:
3:
4:
5:
6:
 x(1,10) = 0;
>> x(1,:) = 10;
>> y = x;
>> [X,Y] = meshgrid(x,y);
>> Z = X.^2 + Y.^2;
>> mesh(X,Y,Z)

liefert einen lehren Plot.
Wie müsste ich das sonst machen? Kann mir jemand einen Tipp/Anregung geben?

Vielen Dank
Tremonia
Airblader Auf diesen Beitrag antworten »

Habe gerade keine Zeit, selber zu experimentieren, darum ein schnelles Google-Ergebnis:
http://matgeom.sourceforge.net/doc/api/m...awCylinder.html

air
Tremonia Auf diesen Beitrag antworten »

Den Befehl scheint es nicht mehr zu geben. Es wird immer ??? Undefined function or method 'drawCylinder' for input arguments of type 'double', angezeigt. Bei der Hilfe steht auch "No Matches Found" aber trotzdem Danke.
Airblader Auf diesen Beitrag antworten »

Das ist ja auch keine Matlab-interne Funktion, sondern ein eigenes Skript, das er dort zum Download anbietet.

air
Tremonia Auf diesen Beitrag antworten »

Zitat:
Original von Airblader
Das ist ja auch keine Matlab-interne Funktion, sondern ein eigenes Skript, das er dort zum Download anbietet.

air

Jo, ich habe folgende Seite gefunden und damit auch das Problem lösen können. http://msemac.redwoods.edu/~darnold/math...ers/index.xhtml
Dort ist ein Skript cylinder.m was mir geholfen hat die Lösung zu finden.

Werde später dann die komplette Lösung posten.
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »