MATLAB如何绘制三维隐函数图形
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB如何绘制三维隐函数图形相关的知识,希望对你有一定的参考价值。
像Maple、Mathematica中就有类似implicitplot3()的三维隐函数绘图函数自定义三维隐函数绘制函数
全世界人都知道Matlab那几千个库函数中,可恨的是,却偏偏不提供个三维隐函数的图像绘制的函数,真是郁闷死了
好,下面我们看一个三维隐函数绘制的应用,它灵活的应用了Matlab的isosurface()(等值面函数),绘制出来的图效果还比较好
function implot3(fun,rangxyz,ngrid,varargin)
%三维隐函数绘图
%
%输入参数说明
-fun 函数句柄,可以是匿名、inline和M函数
% -rangexy=[xmin xmax ymin ymax,zmin,zmax] 绘图范围
% -ngrid 绘图时计算的点数
%
%Example
%fun=@(x,y,z)(x+y+z).*(x.*y+x.*z+y.*z)-10*x.*y.*z;
%rangxyz=[1 10 1 10 1 10];ngrid=50;
%implot3(fun,rangxyz,ngrid)
%
%rewrite by dynamic
%all rights reserved by www.matlabsky.cn
x=linspace(rangexy(1),rangexy(2),ngrid);
y=linspace(rangexy(3),rangexy(4),ngrid);
z=linspace(rangexy(5),rangexy(6),ngrid);
[xx,yy,zz]=meshgrid(x,y,z);
fvector=vectorize(fun);% 将目标函数矢量化
f=f(fvector,xx,yy,zz,varargin:);
p=patch(isosurface(xx,yy,zz,f,0),varargin:);
set(p, 'FaceColor', 'red', 'EdgeColor', 'none');
daspect([1 1 1])
view(3)
camlight;
lighting phong 参考技术A 用isosurface绘制
例子:绘制x^2+y^2-z^2=1的图像
[x,y,z]=meshgrid(linspace(-10,10));
val=x.^2+y.^2-z.^2;
isosurface(x,y,z,val,1)
axis equal本回答被提问者采纳
以上是关于MATLAB如何绘制三维隐函数图形的主要内容,如果未能解决你的问题,请参考以下文章