作业帮 > 综合 > 作业

matlab怎样把2维图叠加成3维图

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/19 07:32:45
matlab怎样把2维图叠加成3维图
就是有个方程f(x,y,z)=0 ,直接用solve算不出z=f(x,y)这种结果
然后我想看这个方程的3维图形,把z分别取值,1-100,然后把z值分别带入3元方程里面,就变成一个个的二元方程f(x,y,1)=0,f(x,y,2)=0,f(x,y,3)=0.一直到f(x,y,100)=0
用ezplot分别绘制这些二元方程2维图,比如
ezplot('f(x,y,1)=0',[0,5,0,5])
ezplot('f(x,y,2)=0',[0,5,0,5])
.
ezplot('f(x,y,100)=0',[0,5,0,5])
单独的这些2维方程的图形都可以绘出来
想请教一下有没什么方法可以用matlab自动的算出z分别取值1-100的2维图形,并将这些2维图形叠加成一个3维图形,
假设方程为    f(x,y,z)=x^2+y^4+z^3+2*y*z-5*sin(z)-4=0 给你提供两种方法:1、按照你的思路,z取不同值,逐个画线:syms x y z
f=x^2+y^4+z^3+2*y*z-5*sin(z)-4;
clf
for ii=-2:.2:2
    h=ezplot(subs(f,z,ii),[-3 3]);
    set(h,'zData', ii*ones(size(get(h,'xData'))));
    hold on
end
title([char(f) ' = 0']);
zlabel('z');
view(40, 25)
axis auto效果图如下: 2、使用isosurface绘制四维图:[x y z] = meshgrid(-3:0.1:3, -3:0.1:3, -2:0.1:2);
v = x.^2+y.^4+z.^3+2*y.*z-5*sin(z)-4;
[faces,verts,colors] = isosurface(x,y,z,v,0,x); 
figure;
patch('Vertices', verts, 'Faces', faces, ... 
    'FaceVertexCData', colors, ... 
    'FaceColor','interp', ... 
    'edgecolor', 'interp');
xlabel('x');
ylabel('y');
zlabel('z');
title([char(f) ' = 0']);
view(40,25);效果图如下: