关于 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 编辑 ] 用plot3d,请查看本版的精华帖。 可以告诉下精华帖的名字么。。好多精华看的头大了。。谢谢哦
我刚才查过书了,plot3是不能描述我要的函数的,他只能画3维空间的点线图。
注意我的函数,是3个自变量,也就是4维的。
按照课本,surf,mesh可以表示4维。如下:
mesh(x,y,z,c):四维作图,(x,y,z)代表空间3维,c代表颜色
但是我用这个函数老出错。。暴汗中。。
[ 本帖最后由 ChaChing 于 2010-4-17 23:19 编辑 ] 这种问题最好自己 help 一下,收获更大
[ 本帖最后由 ChaChing 于 2010-4-17 23:17 编辑 ] 我试过了,说我的维数不对
我的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维数组啊。可是。。。 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 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 编辑 ] MATLAB能画四维图吗??不晓得可不可以用控件,作为一个维数?等待高手解答...
回复 #9 yufeng0525 的帖子
四维的函数关系,还是比较容易理解的。但是四维的空间理解起来就难了(实际上空间三维就足够表述了)你的用控件做一个维数是什么意思呢?坐标轴有几个呢?
[ 本帖最后由 mjhzhjg 于 2007-9-29 13:12 编辑 ] 谢谢帮忙哦。。。。:handshake 四维空间的话,把时间理解为一个维数啊
回复 #12 yufeng0525 的帖子
谢谢你的意见,不过就绘图而言。应该是没法绘制4维的,因为根本没有4维坐标系。如果把时间理解为第四维,那就是不同的三维图了。可以考虑做成三维动画的形式,因为动画就是包含时间信息 学习了,谢谢!
页:
[1]