Plot 3D Graph and make level curves

Hi
I have 3 vectors, where:
X is a vector of numbers;
Y is a vector of numbers;
Z is a function that depends on X and Y (i.e)
Z = 4.6597*x.^2 + 2.6897*x.*y - 0.023578*x + 8.1189*y.^2 - 1.9553*y - 1.2304;
I want to plot a 3D curve and I am not succeding. Can someone help me please? Thanks

 Respuesta aceptada

Star Strider
Star Strider el 23 de Abr. de 2021
Editada: Star Strider el 23 de Abr. de 2021
Use the plot3 function.
If you then want it as a 2D plot, use the view function to rotate it.
EDIT — (23 Apr 2021 at 03:17)
I was intending that to use any of the q3D plotting functions, the vectors need to be transformed into matrices first, and then transformed back into vector to use plot3:
X = ...;
Y = ...;
[Xm,Ym] = ndgrid(X,Y);
Zfcn = @(x,y) 4.6597*x.^2 + 2.6897*x.*y - 0.023578*x + 8.1189*y.^2 - 1.9553*y - 1.2304;
Zm = Zfcn(Xm,Ym);
figure
plot3(Xm(:), Ym(:), Zm(:))
grid on
.

8 comentarios

Bryan Ambrósio
Bryan Ambrósio el 23 de Abr. de 2021
Great man, thank you so much.
Star Strider
Star Strider el 23 de Abr. de 2021
Editada: Star Strider el 23 de Abr. de 2021
My pleasure!
Bryan Ambrósio
Bryan Ambrósio el 23 de Abr. de 2021
Editada: Bryan Ambrósio el 23 de Abr. de 2021
I am also trying to use
contour(Xm, Ym, Zm), it worked just fine
But i want to be sure if the Z axis is beeing cutted in points 1, 2, 3, ..., 8.
How can i make sure of that?
And i think it will be better if in figure of contour the ordened pair appears only as a 'x' or 'o', and not the entire line
If you want to specify those contours:
contour(Xm, Ym, Zm, (1:8))
The extra parentheses are not strictly necessay, I added them for clarification.
X = ...;
Y = ...;
[Xm,Ym] = ndgrid(X,Y);
Zfcn = @(x,y) 4.6597*x.^2 + 2.6897*x.*y - 0.023578*x + 8.1189*y.^2 - 1.9553*y - 1.2304;
Zm = Zfcn(Xm,Ym);
figure
contour(Xm, Ym, Zm, (1:8))
axis('equal')
If you want to label the contours:
contour(Xm, Ym, Zm, (1:8), 'ShowText','on')
That worked when I tried it with my own set of vectors.
Bryan Ambrósio
Bryan Ambrósio el 30 de Abr. de 2021
Editada: Bryan Ambrósio el 30 de Abr. de 2021
Hi, im sorry to bother you again, but now i need to make the same plots, but:
X, Y and Z are vector (not function anymore), how do i do that?
I have tried:
X = ...;
Y = ...;
Z = ...;
[Xm,Ym, Zm] = ndgrid(X,Y,Z);
figure
contour(Xm, Ym, Zm, (1:8))
axis('equal')
but its not working
No worries!
Do this instead —
X = ...;
Y = ...;
Z = ...;
xv = linspace(min(X),max(X),numel(X));
yv = linspace(min(Y),max(Y),numel(Y));
[Xm,Ym] = ndgrid(xv,yv);
Zm = griddata(X,Y,Z,Xm,Ym);
figure
contour(Xm, Ym, Zm, (1:8))
axis('equal')
That should work.
.
Bryan Ambrósio
Bryan Ambrósio el 30 de Abr. de 2021
Thank you so much!
Star Strider
Star Strider el 1 de Mayo de 2021
As always, my pleasure!

Iniciar sesión para comentar.

Más respuestas (2)

Bryan Ambrósio
Bryan Ambrósio el 23 de Abr. de 2021

0 votos

I have tried plot3, but it doesnt fill my needs entirely

Categorías

Más información sobre Get Started with Curve Fitting Toolbox en Centro de ayuda y File Exchange.

Productos

Versión

R2018a

Etiquetas

Preguntada:

el 22 de Abr. de 2021

Comentada:

el 1 de Mayo de 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by