【发布时间】:2017-01-06 22:50:08
【问题描述】:
MATLAB 2016a 引入了Live Scripts,允许在脚本旁边显示绘图输出。是否可以以某种方式显示动画?比如下面的正则脚本代码会绘制几个点然后旋转axes:
x = rand(10, 3);
plot3(x(:, 1), x(:, 2), x(:, 3), 'o')
for ii = 1:360
camorbit(1, 10*cos(ii/90*pi)*pi/45)
drawnow
pause(0.01)
end
如果这嵌入在实时脚本中,则会显示初始绘图,然后在循环运行时似乎没有任何反应,然后最后一个方面(与原始绘图相同)显示在新的显示项中。
或者,是否有与实时脚本中的图进行交互的选项(除了双击以在新图中打开图)?例如。 rotate3d 没有效果。
编辑:从 2019a 版开始,可以按照 release notes 制作动画。
【问题讨论】:
-
我没有 matlab 2016 来尝试这个,但你可以尝试一些事情:1)在旧的发布者中,如果你想要快照,你必须使用
snapnow而不是drawnow在出版商。如果 Live Scripts 从发布者那里借用了代码,那么这可能值得一试。 2) 如果您创建一个实际的电影对象而不是 for 循环并使用movie命令播放它,则可能会设置 LiveScript 以正确解释它。 3) 如果 LiveScript 是正确的基于 html 的,那么它可能支持动画 gif;使用imwrite和单个帧创建一个。 (如果上述任何一项工作,请告诉我。:)) -
@TasosPapastylianou 感谢您的 cmets...1) 不起作用,2)
movie只显示最后一帧,3) 没有尝试过动画 gif。这是最后的手段:) -
我感觉这得等到 2016b..
-
实时脚本不允许与绘图交互。我可以想到一个将 .gif 嵌入到 .html 导出的实时脚本中的解决方案。如果这有任何帮助,我可以提供解决方案,但建议向 mathworks 提交功能请求。
-
在一个稍微相关的注释中,introduced in R2016b 是实时编辑器图形输出的缩放/平移/旋转。它还不是程序化的(至少是公开的),但它正在朝着有用的方向发展。
标签: matlab plot matlab-figure