matlab 画4维图
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/13 08:14:00
matlab 画4维图
其实matlab里边可以画四维图,用三维分别表示XYZ的坐标,而用颜色表示第四维的值.怎么做?
其实matlab里边可以画四维图,用三维分别表示XYZ的坐标,而用颜色表示第四维的值.怎么做?
x=-200:5:200;
y=-200:5:200;
z=-200:5:200;
m=linspace(0,1,length(x));
for i=1:length(x);
plot3(x(i),y(i),z(i),'o','color',[m(i) 0 0])
hold on
end
我从别的答案里找到的.这里解释一下,plot3前三项是3d图点的位置,'o'是指图形形状,'color',是采用红绿蓝三原色(RGB),[m(i) 0 0],分别是红色深度 绿色深度 蓝色深度,每一个值的范围都是0到1,0为黑色,1为纯色.这里采用for循环,逐个点的绘制.
再问: 我的意思是,有x\y\z三个变量,还有一个函数f(x,y,z).这样该如何用matlab画出
再答: 如果你想用颜色表示第四维的数值,首先要知道颜色是由三原色的向量决定的
即[Red Green Blue]
而每一个单独的向量上下限分别为0和1,你想要得到一个对应的颜色,你给出的值只能从0到1之间取。
我这里给出一种可选的例子
假设f(x,y,z)的值域是[0 300],那么对每一个f(x,y,z)得出的值除以100,比如f(x0,y0,z0)=150,那么除以100得到1.5,因此得到的三原色向量,就是[1,0.5,0],再比如f(x1,y1,z1)=250,除以100得到2.5,因此得到的三原色向量,就是[1,1,0.5]。
所以为了得到相应的颜色,在作图之前,要先得出f(x,y,z)的值域,然后进行缩放(f(x1,y1,z1)*3)/(值域长度),这样的话得到的解肯定在0-3之间,这样就可以保证三个向量每一项的都在0-1之间取值。
x=-200:5:200;
y=-200:5:200;
z=-200:5:200;
f=x+y+z;
fs=max(f)-min(f)
fsc=((f*3)./fs)
fsc=fsc-min(fsc)
for i=1:length(x);
if fsc(i)
y=-200:5:200;
z=-200:5:200;
m=linspace(0,1,length(x));
for i=1:length(x);
plot3(x(i),y(i),z(i),'o','color',[m(i) 0 0])
hold on
end
我从别的答案里找到的.这里解释一下,plot3前三项是3d图点的位置,'o'是指图形形状,'color',是采用红绿蓝三原色(RGB),[m(i) 0 0],分别是红色深度 绿色深度 蓝色深度,每一个值的范围都是0到1,0为黑色,1为纯色.这里采用for循环,逐个点的绘制.
再问: 我的意思是,有x\y\z三个变量,还有一个函数f(x,y,z).这样该如何用matlab画出
再答: 如果你想用颜色表示第四维的数值,首先要知道颜色是由三原色的向量决定的
即[Red Green Blue]
而每一个单独的向量上下限分别为0和1,你想要得到一个对应的颜色,你给出的值只能从0到1之间取。
我这里给出一种可选的例子
假设f(x,y,z)的值域是[0 300],那么对每一个f(x,y,z)得出的值除以100,比如f(x0,y0,z0)=150,那么除以100得到1.5,因此得到的三原色向量,就是[1,0.5,0],再比如f(x1,y1,z1)=250,除以100得到2.5,因此得到的三原色向量,就是[1,1,0.5]。
所以为了得到相应的颜色,在作图之前,要先得出f(x,y,z)的值域,然后进行缩放(f(x1,y1,z1)*3)/(值域长度),这样的话得到的解肯定在0-3之间,这样就可以保证三个向量每一项的都在0-1之间取值。
x=-200:5:200;
y=-200:5:200;
z=-200:5:200;
f=x+y+z;
fs=max(f)-min(f)
fsc=((f*3)./fs)
fsc=fsc-min(fsc)
for i=1:length(x);
if fsc(i)