【问题标题】:Make movie in MatLab在 MatLab 中制作电影
【发布时间】:2012-10-16 15:43:22
【问题描述】:

我正在尝试使用 movie 命令在 MatLab 中创建一个简短的动画。动画应该画一个圆圈。但是,当我运行以下脚本时,“o”符号只是在图形窗口周围随机跳跃,而不会留下任何痕迹。

z = linspace(0,2*pi,100);
nframes = length(z);
Frames = moviein(nframes);
for i = 1:nframes
    x = cos(i);
    y = sin(i);
    plot(x,y,'o','erase','none');
    Frames(:,i) = getframe;
    pause(0.25);
end
movie(Frames,1)

如果有人能向我解释为什么脚本不能正常工作,我将不胜感激!

【问题讨论】:

  • 在对plot 的调用中,'erase' 参数有什么作用?
  • 我想也许我应该包含它,这样循环重新开始时'o' 符号不会消失。但我想它是多余的?
  • 我会说尝试一下,看看你会得到什么。
  • 嗯,在我看来,这部电影确实绘制了它应该绘制的点,并且动画显示了“o”以正确的方式从一个点跳到另一个点。问题是点不“粘”,所以当动画完成时,图形窗口是空白的。
  • 这就是让我怀疑那个函数调用中的“擦除”和“无”的原因。正在发生的事情是它正在绘制整个框架(没有透明度),而不仅仅是绘制“o”。我不确定为什么。我希望我更了解 Matlab,以便我可以帮助您...

标签: matlab animation geometry


【解决方案1】:

这画了一个圆圈。希望能帮助到你。

z = linspace(0,2*pi,100);
nframes = length(z);
Frames = moviein(nframes);
for i = 1:nframes
    x = cos(2*pi*i/nframes);
    y = sin(2*pi*i/nframes);
    plot(x,y,'o');
    hold on
    Frames(:,i) = getframe;
    pause(0.01);
end
movie(Frames,1)

【讨论】:

  • 太棒了!非常感谢。我应该记得包括“坚持”,我明白了。
【解决方案2】:

您可能想要遍历z 向量。尝试将x = cos(i) 更改为x = cos(z(i)) 并与y = sin(i) 相同。

【讨论】:

  • 感谢您的意见!但是,我仍然遇到同样的问题。
  • 如果你想让点坚持情节,请在调用plot后尝试hold on;命令。
  • 是的,谢谢,我刚刚收到与上面相同的信息 :)。非常感谢您的帮助!
【解决方案3】:

这个很晚了,但我希望它可能对那里的人有所帮助...... 我正在研究为圆上的点设置动画的方法,虽然我还没有弄清楚,但我注意到上面建议的代码中的某些内容可能会使您的圆看起来更“圆”。 设置后

hold on

如果你添加另一行只是说

axis('equal'); 

您将获得随绘图缩放的轴,因此您的圆圈不会因图形窗口尺寸而损坏。

【讨论】:

    猜你喜欢
    • 2012-08-19
    • 1970-01-01
    • 2015-01-22
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    相关资源
    最近更新 更多