isosurface函数求助

 我来答
赵笑笑LY
2017-03-06 · TA获得超过104个赞
知道答主
回答量:300
采纳率:0%
帮助的人:86.7万
展开全部

对于一般的三维隐函数绘图,可以使用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的范围,画出来的曲面如下所示:
 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式