How to plot a function with 3 independent variables
13 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Seng Hkawn N-Sang
am 13 Okt. 2021
Kommentiert: Seng Hkawn N-Sang
am 15 Okt. 2021
f(x,y,z)=0.95*x+0.73*y+0.62*z-130.05
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!

1 Kommentar
Akzeptierte Antwort
KSSV
am 13 Okt. 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) ;
isosurface(X,Y,Z,V,1e-4)
6 Kommentare
Walter Roberson
am 14 Okt. 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(:))
Vmax = max(V(:))
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));
end
camlight;
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 https://www.mathworks.com/matlabcentral/answers/1562461-how-to-plot-a-function-with-3-independent-variables#comment_1783116 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.)
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Surface and Mesh Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!