How to plot a function with 3 independent variables
40 次查看(过去 30 天)
显示 更早的评论
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!
采纳的回答
KSSV
2021-10-13
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 个评论
Walter Roberson
2021-10-14
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.)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Lighting, Transparency, and Shading 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!