【问题标题】:MATLAB 4D (3d + color) plot with animation带有动画的 MATLAB 4D(3d + 颜色)绘图
【发布时间】:2012-07-12 08:55:17
【问题描述】:

我有 3 组 30 个数据点 X、Y、Z。我想制作第四维颜色。但是,我要使用的第 4 个维度的长度与我的 X、Y、Z(133 对 30)不同。

这是在 MATLAB 中使用 scatter3 函数时出现的问题,因为颜色维度必须与 X、Y、Z 的大小匹配。

我还想以 .avi 格式制作此情节的动画,并让第 4 维(颜色)随着电影的进行而改变。

提前致谢。

【问题讨论】:

  • 为什么长度不同?您的颜色向量如何与 XYZ 向量的元素匹配?如果它通过物理尺寸(而不是像素)链接,那么您可以通过插值 XYZ 数据或对颜色数据进行下采样来解决这个问题。
  • 每个点是否需要自己的颜色,或者您是否希望所有点都具有相同的颜色,随着时间的推移颜色会发生变化?
  • 每个点可以是相同的颜色开始,但我可能想改变它,使每个点可以遵循不同的颜色模式。
  • 嘿,丹,由于某种原因,我无法直接回复您的评论 - 颜色的长度不同,因为它代表随时间变化的数量。这是实验数据。 X,Y,Z 是固定分量,第 4 维是我随时间变化的测量值(电压)。

标签: matlab animation colors 3d avi


【解决方案1】:

创建一个 2D 或 3D 矩阵来定义您的颜色:如果您使用颜色映射中索引的颜色,则为 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

编辑:注意颜色图和轴的“clim”属性。

【讨论】:

  • 上面的代码只是把我所有的点都改成了浅绿色。我想让它们在通过第四维度时改变颜色。第 4 维是我用 DAQ 记录的电压。所以它从数据点 1 变为 133,如果可能的话,我希望动画显示出来。谢谢
  • 查看编辑。此示例将随着时间的推移生成不断变化的颜色。
  • 这真是太棒了!!我现在唯一需要做的就是制作一个与颜色搭配的图例。这真是一个令人难以置信的可视化工具!
  • 你知道如何创造这样的传奇吗?
  • 先看看colorbar。您可以从许多预定义的colormaps 中进行选择,甚至可以创建自己的。只需谷歌它或在 matlab 中输入help colorbarhelp colormap
猜你喜欢
  • 2018-09-24
  • 2019-03-07
  • 2012-06-04
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
  • 1970-01-01
相关资源
最近更新 更多