原帖由 水私语 于 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;
[X,Y]=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=[X(i)/a Y(i)/b Z(i)/c];%定义颜色映射矩阵,需要注意在matlab里颜色通常是用一
%个长度为3 的向量表示,而不是你说给的一个参数c
axis([0 a 0 b 0 1100]); text(X(i),Y(i),Z(i),'*','fontsize',30,'color',co);
end
figure(2); surf(X,Y,Z)
[ 本帖最后由 ChaChing 于 2010-8-3 23:52 编辑 ] |