MATLAB - 3D动画情节

时间:2015-06-02 10:07:45

标签: matlab animation plot 3d

我有一个包含4个变量的矩阵。 我想将结果绘制为3D表面动画,其中3个变量为x,y和z,第4个变量为time(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曲面图,以便看起来有人正在挥舞毯子;)

1 个答案:

答案 0 :(得分:0)

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

 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