【问题标题】:MATLAB - 3D Animation plotMATLAB - 3D 动画情节
【发布时间】:2015-06-02 10:07:45
【问题描述】:

我有一个包含 4 个变量的矩阵。 我想将结果绘制为 3D 表面动画,其中 3 个变量为 x、y 和 z,第 4 个变量为时间 (t)。

我想代码是这样的:

figure(1)
plot4d(Results(:,1), Results(:,2), Results(:,6), Results(:,3))

这是一些示例数据:

    X         Y         t                            Z                     

   -0.1111    1.2670    1.1000    0.0000    0.0000   9.4568
   -0.1111    1.2670    1.2000    0.0000    0.0000   15.9115
   -0.1111    1.2670    1.3000    0.0000    0.0000   18.3639
   -0.1111    1.2670    1.4000    0.0000    0.0000   22.3732
   -0.1111    1.2670    1.5000    0.0000    0.0000   23.3274
   -0.1111    1.2670    1.6000    0.0000    0.0000   23.3389
   -0.1111    1.2670    1.7000    0.0000    0.0000   23.3437
   -0.1111    1.2670    1.8000    0.0000    0.0000   22.0600
   -0.1111    1.2670    1.9000    0.0000    0.0000   23.7531
   -0.1111    1.2670    1.0000    0.0000    0.0000         0
   -0.1111    1.2670    2.1000    0.0000    0.0000         0
   -0.1111    1.2670    2.2000    0.0000    0.0000         0
   -0.1111    1.2670    2.3000    0.0000    0.0000         0
   -0.1111    1.2670    2.4000    0.0000    0.0000         0
   -0.1111    1.2670    2.5000    0.0000    0.0000         0
   -0.1111    1.2670    2.0000    0.0000    0.0000   23.1249
   -0.1111    1.5330    1.1000    0.0000    0.0000   20.7103
   -0.1111    1.5330    1.2000    0.0000    0.0000   40.2953
   -0.1111    1.5330    1.3000    0.0000    0.0000   53.0801
   -0.1111    1.5330    1.4000    0.0000    0.0000   63.1132

我们的目标是生成一个随时间变化的 3D 表面图,这样看起来就像有人在挥舞毯子;)

【问题讨论】:

  • 这不是一个编码问题,它看起来像一个命令......所以不是免费的代码编写服务。请向我们展示您尝试过的内容以及您的编码问题。
  • @Ratbert:我的目的是写一个“尽可能清晰”的问题。我目前正在尝试使用“电影”功能制作示例代码,但我仍然在努力做到正确
  • 你的时代有什么价值观?离散的,类似于 [1,1,1,1,2,2,2,...]?你能展示一些示例数据吗?

标签: matlab animation plot 3d


【解决方案1】:

如果您绘制的是一条线,那么您可以逐帧显示它,根据时间戳在它们之间暂停(假设以秒为单位):

 x = Results(:,1);
 y = Results(:,2);
 z = Results(:,3);
 t = Results(:,4);
dt = [diff(t);eps]; 

h = axes('Parent', figure());
hold(h, 'off');

for k = 1:numel(t)
        plot3(h, x(1:k), y(1:k), z(1:k), '-*k');
        pause(dt(k));
end;

如果您想捕捉电影的动画,请查看MATLAB tutorial page

【讨论】:

  • 不,情节应该是一个表面。忘了在问题中提到它。还是谢谢!
  • @ViharChervenkov 如果您的 x、y 和 z 是向量,则它不能是表面。
  • 是的,我相信这是我遇到的第一个问题。我将尝试将数据重新排序为正确的格式,其中 z 是矩阵。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2021-10-21
  • 2013-02-02
  • 2014-05-11
  • 1970-01-01
  • 2012-07-12
  • 2015-05-12
相关资源
最近更新 更多