matlab怎么画出4维函数图形

如题所述

1、打开matlab ,点击左上角的新建脚本文件

2、构造x,y,z,f(x,y,z)这4个矩阵,也可以直接用sphere命令来构建x,y,z。

3、用以下命令就可以得到结果,figure中有很多选项可以自定义,surf绘图之后,用shading interp;light;lighting gouraud

4、使用上述命令得到了如下所示的图形,使用surf可以绘制一些特殊的4维图,其中的关键是Cdata项的值,它决定了色彩是如何变化的。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-13

你的 v 是关于 x, y, z 的函数,对应的图形是由四维空间内所有满足v = f(x,y,z)的点 (x,y,z,v) 的集合。而人类视觉能够看到的最大空间是三维空间,超过3维空间一般就得靠想象了。 所以,据我所知,matlab 里并没有所谓的 4维画图函数。也就是说你是没法在一个三维空间体现四维图像 v=f(x,y,z) 的全貌 (即 点(x,y,z,v) 的集合) 的。不过,很多时候,我们未必需要关心这个4维图形的全貌,我们也许只关心这个4维空间里某一个截面上(如 v = 常数)的图形。比如固定x y, z, v 中某一个后,得到的是一个3维函数。对于这个3维函数图形,我觉得,你可以有以下三种处理方法:


1. 如果这个3维函数有显式的话,你可以用mesh画图
例如: v = f(x,y,z) = x^2 + y^2 + z^3  查看 v = 10 的三维图形。我们可以求出3维显式函数:z = (10 - x^2 - y^2)^(1/3)

2. 如果这个3维函数没有显式,你可以用 Mupad 提供的三维隐函数画图
例如: v = f(x,y,z) = x*y*z*ln(1+x^2+y^2+z^2)  查看 v = 10 的三维图形。很显然,我们无法求出这个函数在 v = 10 的显式表达式,所以,只好用3维隐函数作图。好在 Matlab 的符号引擎 Mupad 为我们提供了3维隐含作图的函数,可以直接使用。只不过,我们需要先在command window 里输入 mupad 来启动一个notebook

本帖最后由 winner245 于 2013-8-13 10:06 编辑

你的 v 是关于 x, y, z 的函数,对应的图形是由四维空间内所有满足v = f(x,y,z)的点 (x,y,z,v) 的集合。而人类视觉能够看到的最大空间是三维空间,超过3维空间一般就得靠想象了。 所以,据我所知,matlab 里并没有所谓的 4维画图函数。也就是说你是没法在一个三维空间体现四维图像 v=f(x,y,z) 的全貌 (即 点(x,y,z,v) 的集合) 的。不过,很多时候,我们未必需要关心这个4维图形的全貌,我们也许只关心这个4维空间里某一个截面上(如 v = 常数)的图形。比如固定x y, z, v 中某一个后,得到的是一个3维函数。对于这个3维函数图形,我觉得,你可以有以下三种处理方法:


1. 如果这个3维函数有显式的话,你可以用mesh画图
例如: v = f(x,y,z) = x^2 + y^2 + z^3  查看 v = 10 的三维图形。我们可以求出3维显式函数:z = (10 - x^2 - y^2)^(1/3)

[x,y] = meshgrid(linspace(-2,2));

z = (10 - x.^2 - y.^2).^(1/3);

mesh(x,y,z)

复制代码

 
2. 如果这个3维函数没有显式,你可以用 Mupad 提供的三维隐函数画图
例如: v = f(x,y,z) = x*y*z*ln(1+x^2+y^2+z^2)  查看 v = 10 的三维图形。很显然,我们无法求出这个函数在 v = 10 的显式表达式,所以,只好用3维隐函数作图。好在 Matlab 的符号引擎 Mupad 为我们提供了3维隐含作图的函数,可以直接使用。只不过,我们需要先在command window 里输入 mupad 来启动一个notebook,在notebook里再输入:

plot(plot::Implicit3d(x*y*z*ln(1+x^2+y^2+z^2)-10, x = -10..10, y = -10..10, z = -10..10), Scaling = Constrained)

复制代码

给个mupad的代码和图形截图:


3. 无论是否有显式,matlab 还提供一种画切片图形的函数slice,slice做出的图是在切片上用颜色表示v的值
以  v = f(x,y,z) = x*y*z*exp(-(x^2+y^2+z^2))  为例,假设我们希望看 v = f(x,y,z) 在 x = 0, y = 1, z = 1 这些平面切片的图形,我们可以用以下代码:

[x,y,z] = meshgrid(linspace(-2,2));

v = x.*y.*z.*exp(-(x.^2+y.^2+z.^2));

xslice = 0; yslice = 1; zslice = 1;

slice(x,y,z,v,xslice,yslice,zslice)

xlabel('x'); ylabel('y'); zlabel('z');

colormap hsv

复制代码

得到图形为:    

第2个回答  2011-09-09
参考
四维数据怎么画平面图 用matlab
http://zhidao.baidu.com/question/317442668.html本回答被提问者采纳
相似回答