isosurface函数求助
1个回答
展开全部
对于一般的三维隐函数绘图,可以使用isosurface函数:
n = 30;
x = linspace(0, 100, n);
y = linspace(0, 2000, n);
z = linspace(0, 50, n);
[z, y, x] = meshgrid(x, y, z);
v = 4.12*(z-50.48).^3 + 18.08*(y-2160).*(z-50.48) - 127.28*(x-21.56);
[faces,verts,colors] = isosurface(x,y,z,v,0,z);
patch('Vertices', verts, 'Faces', faces, ...
'FaceVertexCData', colors, ...
'FaceColor','interp', ...
'edgecolor', 'interp');
xlabel z, ylabel y, zlabel x
view(-60,10)
需要说明的是,按图中要求,x-y-z三轴的数据应分别对应z-y-x,换言之,x和z互换,所以,代码中的meshgrid函数以及下面的表达式都要进行交换。
对于本题而言,函数可以写成z=f(x,y)显函数的形式,所以也可以直接用surf绘图:
x = linspace(0, 100, n);
y = linspace(0, 2000, n);
[x, y] = meshgrid(x, y);
z = (4.12*(x-50.48).^3 + 18.08*(y-2160).*(x-50.48)) / 127.28 + 21.56;
surf(z, y, x, 'edgecolor', 'none')
xlabel z, ylabel y, zlabel x
xlim([0 50])
view(-75,6)
这里同样要注意调用surf函数时变量的互换。
如果不限制z的范围,画出来的曲面如下所示:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询