作业帮 > 综合 > 作业

matlab 画图 三元函数

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/02 07:49:53
matlab 画图 三元函数
|x|+|y|+|z|=1这个图形用matlab怎么画呢?(最好有程序)
首先考虑了用隐函数生成图像,函数如下
>> ezsurf('(abs(x)+abs(y)-1).*((abs(x)+abs(y))<1)',[-1 1 -1 1 ])
>> hold on
>> ezsurf('-(abs(x)+abs(y)-1).*((abs(x)+abs(y))<1)',[-1 1 -1 1 ])
>> axis equal
>> view(-30,10);
>> 
图片如图所示,不过存在一个没法解决的问题,就是显示范围,这个隐函数在
[-1 1 -1 1]整个范围内都能算出值,虽然在我把xy超出范围的值都置0了,不过0也能画出来.
想了半天也想不出来怎么把筛选矩阵abs(x)+abs(y))<1的0都变成NaN,因为不能直接一个语句就表达出来.
画这个东西还有个方法,就是用patch,这个函数是能画出一系列的多边形,你可以直接用这个函数画8个三角形出来. 
用patch的方法我写了一个m函数,很简单
function point
p=[1 0 0;0 -1 0;-1 0 0;0 1 0;0 0 1 ;0 0 -1];
v=[1 2 6;1 4 6;2 3 6;3 4 6;1 2 5;1 4 5;2 3 5;3 4 5];
clf;
patch('faces',v,'vertices',p,'facevertexcdata',jet(8),'facecolor','flat');
axis equal;
axis([-1 1 -1 1 -1 1]);
grid on;
view(-20,10);