matlab怎么画出4维函数图形

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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项的值,它决定了色彩是如何变化的。

参考技术A

你的 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

复制代码

得到图形为:    

参考技术B 参考
四维数据怎么画平面图 用matlab
http://zhidao.baidu.com/question/317442668.html本回答被提问者采纳

plot和ezplot有啥区别?

参考技术A

plot 和ezplot的区别是释义不同,用法不同,侧重点不同。

一、释义不同

1、plot:plot是绘制二维图形,并且是x,y的表达式是已知的或者是形如y=f(x)这样确切的表达式。

2、ezplot:ezplot是画出隐函数图形,是形如f(x,y)=0这种不能写出像y=f(x)这种函数的图形。

二、用法不同

1、plot:使用plot 函数之前,必须首先定义好曲线上每一点的x及y坐标。

2、ezplot:ezplot无需数据准备,直接画出函数图形,基本调用格式为ezplot(f),其中f 是字符串或代表数学函数的符号表达式,只有一个符号变量。

三、侧重点不同

1、plot:plot侧重于向量或矩阵的列来绘制曲线的。

2、ezplot:ezplot侧重于实现定义函数。

以上是关于matlab怎么画出4维函数图形的主要内容,如果未能解决你的问题,请参考以下文章

在matlab画出三维球面并绕轴旋转一定角度

matlab怎么用函数填充三维曲线

如何用Matlab画二元函数?

matlab gui 清除图形

如何用matlab画平滑曲线?

matlab 有关figure图 中箭头怎么画