水私语 发表于 2007-9-28 09:13

关于 matlab 三维制图的问题

用matlab可以表示c=c(x,y,z)这样的函数么?
象surf(x,y,z,c)
画出c=x^2+y^2+z^2的图可以么?
0<x<10
0<y<10
0<z<10

Ref : 〔示例〕关于 matlab 四维图的绘制问题
http://forum.vibunion.com/forum/thread-52593-1-2.html(By ChaChing)

[ 本帖最后由 ChaChing 于 2010-7-25 00:42 编辑 ]

octopussheng 发表于 2007-9-28 09:35

用plot3d,请查看本版的精华帖。

水私语 发表于 2007-9-28 10:10

可以告诉下精华帖的名字么。。好多精华看的头大了。。谢谢哦

我刚才查过书了,plot3是不能描述我要的函数的,他只能画3维空间的点线图。
注意我的函数,是3个自变量,也就是4维的。
按照课本,surf,mesh可以表示4维。如下:
mesh(x,y,z,c):四维作图,(x,y,z)代表空间3维,c代表颜色
但是我用这个函数老出错。。暴汗中。。

[ 本帖最后由 ChaChing 于 2010-4-17 23:19 编辑 ]

eight 发表于 2007-9-28 10:16

这种问题最好自己 help 一下,收获更大

[ 本帖最后由 ChaChing 于 2010-4-17 23:17 编辑 ]

水私语 发表于 2007-9-28 10:22

我试过了,说我的维数不对
我的m文件是
= meshgrid(0:1:10, 0:1:10,0:1:10);
%定义函数
c=x.^2+z.^2+y.^2
surf(x,y,z,c)
得到的结果是
??? Error using ==> surface
CData must be an M-by-N matrix or M-by-N-by-3 array.

Error in ==> G:\matlab\toolbox\matlab\graph3d\surf.m
On line 68==> hh = surface(varargin{:});

Error in ==> G:\matlab\work\ai11.m
On line 7==> surf(x,y,z,c)
维数不对,可是我不知道怎么改了,按理就应该是3维数组啊。可是。。。

eight 发表于 2007-9-28 10:28

CData must be an M-by-N matrix or M-by-N-by-3 array.

这是该命令的语法要求,你看看你的 C 矩阵是否满足,然后认真看看帮助中的例子

[ 本帖最后由 eight 于 2007-9-28 10:33 编辑 ]

花如月 发表于 2007-9-28 15:29

原帖由 水私语 于 2007-9-28 09:13 发表
用matlab可以表示c=c(x,y,z)这样的函数么?
象surf(x,y,z,c)
画出c=x^2+y^2+z^2的图可以么?

你需要注意一下几点:

(1)c=c(x,y,z)是四维关系,而matlab只能绘制2维和3维图
(2)surf(x,y,z,c)使用来绘制表面图的,不过c只是一个颜色控制参数,而不是你所指的第四维。各个参数的维数关系
      请多看看帮助文档。
(3)如果是想用c指定的颜色来绘制对应的xyz三维点,那么没有现成三维绘制指令可用。

下面的程序可以近似完成你所需要的功能。
clear,clc
N=10; x=0:N; y=0:N; L=(N+1)^2;
=meshgrid(x,y);
Z=X^2-5*X.*Y+Y.^2;%定义绘图函数
a=max(X(:));b=max(Y(:));c=max(Z(:));
for i=1:L;
    co=;%定义颜色映射矩阵,需要注意在matlab里颜色通常是用一
                                    %个长度为3 的向量表示,而不是你说给的一个参数c
    axis(); text(X(i),Y(i),Z(i),'*','fontsize',30,'color',co);
end
figure(2); surf(X,Y,Z)

[ 本帖最后由 ChaChing 于 2010-8-3 23:52 编辑 ]

yufeng0525 发表于 2007-9-28 15:49

MATLAB能画四维图吗??不晓得可不可以用控件,作为一个维数?等待高手解答...

花如月 发表于 2007-9-28 16:30

回复 #9 yufeng0525 的帖子

四维的函数关系,还是比较容易理解的。但是四维的空间理解起来就难了(实际上空间三维就足够表述了)

   你的用控件做一个维数是什么意思呢?坐标轴有几个呢?

[ 本帖最后由 mjhzhjg 于 2007-9-29 13:12 编辑 ]

水私语 发表于 2007-9-29 12:45

谢谢帮忙哦。。。。:handshake

yufeng0525 发表于 2007-9-29 15:42

四维空间的话,把时间理解为一个维数啊

花如月 发表于 2007-9-29 16:21

回复 #12 yufeng0525 的帖子

谢谢你的意见,不过就绘图而言。应该是没法绘制4维的,因为根本没有4维坐标系。如果把时间理解为第四维,那就是不同的三维图了。可以考虑做成三维动画的形式,因为动画就是包含时间信息

beckybu 发表于 2012-12-24 17:03

学习了,谢谢!
页: [1]
查看完整版本: 关于 matlab 三维制图的问题