求各位指教matlab,我想用isosurface画一个球面,可结果确实这样,为什么呀?

 我来答
tianxiawulang
推荐于2017-12-15 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2638万
展开全部

原因在于,你没有指定等值面的值。

 

在未指定的条件下,会调用isovalue函数根据数据的分布情况自动确定一个值,而该值不等于0,也就是说,你画的并不是R=1的球面(从实际情况看,R>1),但坐标范围在-1~1之间,所以画出来的就是球面的一部分了。

 

把绘图的那句改成

isosurface(x.^2+y.^2+z.^2-1,0)

即可。

 

顺便提醒一下,坐标没必要取的那么密集,那样会耗费大量的内存,速度也很慢,但显示效果并没有太大提高。另外,建议带上参数x、y、z,以便显示正确的坐标范围。

[x,y,z]=meshgrid(-1:0.1:1);
isosurface(x,y,z,x.^2+y.^2+z.^2-1,0)
axis equal

 

度娘又抽风了,上传图片等了好长时间也不成功,就不传了吧,反正一运行就知道了。

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式