动画效果的实时脚本

14

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

如果这被嵌入到 Live Script 中,那么会显示初始图形,然后看起来在循环运行时似乎什么也没有发生,最后一个方面(与原始图形相同)会在新的显示项中显示。

或者说,在 Live Script 中有与图形交互的选项吗?例如,rotate3d 没有效果。

编辑:自2019a版本发布以来,可以进行动画处理,详见发布说明


我没有Matlab 2016来尝试这个,但你可以尝试几件事情:1)在旧的发布器中,如果你想要一个快照,你必须使用snapnow而不是drawnow。如果Live Scripts从发布器借用了代码,那么这个方法可能值得一试。2)如果你创建了一个实际的电影对象,并使用movie命令回放它,那么LiveScript可能会正确地解释它。3)如果LiveScript是基于html的,则可能支持动画gif;使用imwrite和单个帧创建一个动画gif。(让我知道上述任何一个是否有效。 :) ) - Tasos Papastylianou
1
@TasosPapastylianou 感谢您的评论... 1)不起作用,2)“movie”只显示最后一帧,3)还没尝试过动画gif。那是最后的选择 :) - zeeMonkeez
我有一种感觉,这将不得不等到2016b。 - zeeMonkeez
Live脚本不允许与图形交互。我可以想到一种解决方案,将.gif嵌入到导出的.html Live脚本中。如果这有帮助,我可以提供一个解决方案,但建议向MathWorks提交功能请求。 - Oleg
1
在一个微不足道的相关说明中,R2016b中引入了用于实时编辑器图形输出的缩放/平移/旋转功能。虽然它还没有编程化(至少是公开的),但它正在朝着有用的方向发展。 - sco1
@excaza 啊,它出来了..我想在发布后把它放到一个答案中.. - zeeMonkeez
3个回答

1
似乎答案是否定的——Live Scripts还不够成熟,缺乏丰富的功能。它们无法进行调试,这一事实会让我在未来1-2个版本中远离它们。 你看过Matlab Notebooks吗?如果你想要漂亮的格式和一些基本的交互功能,它可能是你所需的。

如果我没记错的话,Notebooks 只支持 Windows 系统? - zeeMonkeez
你正在针对哪个操作系统进行开发?仅支持 MS Word。 - Ofek Shilon
刚刚查了一下,它只支持Windows系统。我希望它能在Windows和Mac上运行,并且最好也支持Linux系统。 - zeeMonkeez
好的,抱歉我不能提供更好的答案。 - Ofek Shilon

0

2016b版本新增了通过悬停在axes上时出现的控件来操作axes的选项。请注意,这不适用于不可见的axesVisible='off')。相反,标尺和背景必须被隐藏:

ax = axes;
x = rand(9, 3);
plot3(ax,x(:, 1), x(:, 2), x(:, 3), 'x'); 
% Hide rulers and background color
ax.Color = [1 1 1 0]; 
ax.XAxis.Visible ='off'; 
ax.YAxis.Visible ='off'; 
ax.ZAxis.Visible ='off';

使用subplot排列的坐标轴也可以单独操作。


0

问题中发布的示例代码在MATLAB 2019a中生成旋转图。但在2018b中尚未生效。2019a版本说明提到了这一点。

You can enable for-loop animations in the Live Editor to show changes in plotted data over time. To enable animations in the Live Editor, set the matlab.editor.AllowFigureAnimations setting to true:

s = settings;
s.matlab.editor.AllowFigureAnimation.PersonalValue = true;
在运行示例脚本之前,运行这两行代码将产生预期的行为。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接