Octave:如何防止 plot window 自行关闭?

Octave: How to prevent plot window from closing itself?

从 Octave CLI 或 Octave GUI,如果我 运行

plot([1,2,3],[1,4,9])

它将显示一个情节 window 我可以查看并与之互动。但是,如果我使用与 content

相同的命令创建文件 myPlot.m
plot([1,2,3],[1,4,9])

而且我 运行 它与

octave myPlot.m

然后我可以短暂地看到情节 window 出现了几分之一秒并立即自行关闭。我怎样才能防止此 window 自行关闭?

八度 4.2.2 Ubuntu18.04

考虑到评论中的混乱,这里有一个完整的例子。

假设您创建了一个名为 plotWithoutExiting.m 的脚本,旨在直接从 linux shell 调用,而不是从 Octave 解释器中调用:

#!/opt/octave-4.4.1/bin/octave

h = plot(1:10, 1:10);
waitfor(h)
disp('Now that Figure Object has been destroyed I can exit')

linux第一行对应'shebang'语法;这个特殊注释告诉 bash shell 哪个解释器 运行 执行下面的脚本。我在这里使用了我的八度可执行文件的位置,你的可能位于其他地方;相应地进行调整。

然后我更改 bash shell 中的权限以使该文件可执行

chmod +x ./plotWithoutExiting.m

然后我可以 运行 文件 运行 宁它:

./plotWithoutExiting.m

或者,您可以跳过 'shebang' 和可执行权限,并尝试通过显式调用八度解释器来 运行 此文件,例如:

octave ./plotWithoutExiting.m

甚至

octave --eval "plotWithoutExiting"

您还可以添加 --no-gui 选项以防止八度音程 GUI 在弹出时立即弹出。

然后上面的脚本应该 运行,将绘图捕获到图形对象句柄中 hwaitfor(h) 然后暂停程序流,直到图形对象被销毁(例如通过手动关闭 window)。

理论上,如果您不想收集图形句柄,您可以使用waitfor(gcf)暂停执行,直到最后一个活动图形对象被销毁。

一旦发生这种情况,程序将正常继续,直到退出。如果你不是 运行 在交互模式下使用八度解释器,这通常也会退出八度环境(如果这不是你想要的,你可以使用 --persist 选项来防止这种情况)。

希望这对您有所帮助。

运行 @terminal as(稍后需要退出octave)

octave --persist myscript.m

或追加

等待(gcf)

在脚本结尾以防止剧情结束