2012-07-12 80 views
0

我有3组30个数据点X,Y,Z。我想制作第四维颜色。然而,我想要使用的第四个维度与我的X,Y,Z不同(133 vs 30)。带动画的MATLAB 4D(3d +彩色)绘图

在MATLAB中使用scatter3函数时,这是一个问题,因为颜色尺寸必须与X,Y,Z的尺寸匹配。

我也想用.avi格式动画这个情节,并且随着电影的进展而改变第四维(颜色)。

在此先感谢。

+0

为什么它是不同的长度?你的颜色矢量如何与你的XYZ矢量元素相匹配?如果它通过物理尺寸链接(而不是像素),那么你可以通过插入你的XYZ数据或者降低你的颜色数据来解决这个问题。 – Dan 2012-07-12 15:09:21

+0

每个点是否都需要自己的颜色,还是要让所有的点都是相同的颜色,并且颜色随着时间而变化? – tmpearce 2012-07-12 15:17:38

+0

每个点可以是相同的颜色开始,但我可能想要更改它,以便每个点可以遵循不同的颜色模式。 – user1412994 2012-07-12 15:28:41

回答

1

创建二维或三维矩阵来定义您的颜色:如果您使用索引到色彩地图中的颜色,则使用2D;如果您想使用RGB值,则使用3D。

X=1:30;Y=randperm(30);Z=ones(size(X)); 
voltage_matrix = ...; %# 30 by 133 
cdata = voltage_matrix; 
handle = scatter3(X,Y,Z); 

colormap('jet') 
set(gca,'clim',[min(voltage_matrix) max(voltage_matrix)]) 

for t=1:size(cdata,2) %# 1 to 133 
    set(handle, 'cdata', cdata(:,t)); 
    pause(.1) 
end 

编辑:注意colormap和坐标轴'clim'属性。

+0

上面的代码只是将我的所有点改为浅绿色。我希望让它们在第四维中前进,改变颜色。第四维是用DAQ记录的电压。所以它从数据点1改变到133,我希望动画能够表明,如果可能的话。谢谢 – user1412994 2012-07-12 19:12:20

+0

请参阅编辑。这个例子会随着时间的推移产生颜色变化 – tmpearce 2012-07-12 19:22:50

+0

这绝对是惊人的!我现在唯一需要做的就是创造一个符合颜色的传说。这真是一个令人难以置信的可视化工具! – user1412994 2012-07-12 20:36:10