Clear Filters
Clear Filters

How to plot a function with 3 independent variables

62 views (last 30 days)
f(x,y,z); x; y; and z are values between 0 and 100.
f(x,y,z) is shown in color. How can I plot in MATLAB similar to figure below.
Thank you!

Accepted Answer

KSSV on 13 Oct 2021
f = @(x,y,z) 0.95*x+0.73*y+0.62*z-130.05 ;
x = linspace(0,100) ;
y = linspace(0,100) ;
z = linspace(0,100) ;
[X,Y,Z] = meshgrid(x,y,z) ;
V = f(X,Y,Z) ;
Walter Roberson
Walter Roberson on 14 Oct 2021
f = @(x,y,z) 0.95*x+0.73*y+0.62*z-130.05 ;
x = linspace(60,100) ;
y = linspace(60,100) ;
z = linspace(60,100) ;
[X,Y,Z] = meshgrid(x,y,z) ;
V = f(X,Y,Z) ;
Vmin = min(V(:))
Vmin = 7.9500
Vmax = max(V(:))
Vmax = 99.9500
levels = 70:5:100;
Nlevels = length(levels);
cmap = hot(Nlevels);
for K = 1 : Nlevels
s = isosurface(X, Y, Z, V, levels(K));
p(K) = patch(s);
p(K).EdgeColor = 'none';
p(K).FaceColor = cmap(K,:);
isonormals(X, Y, Z, V, p(K));
lighting gouraud;
xlim auto; ylim auto; zlim auto
view(3); view(36, 64);
legend(p, string(levels))
You cannot do contour lines because you are dealing with a 3D object: you can only do ISO surfaces.
It might be possible to get the colors right without some of the above steps. With the default steps I showed in you might notice that the colors come out wrong compared to the legend: it turns out that you are looking at the "back" of the plates, and that you need to view() to see the front (or you need to move the light.)

Sign in to comment.

More Answers (0)




Community Treasure Hunt

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

Start Hunting!