Octave:如何防止绘图窗口自行关闭?

Gae*_*eul 9 plot window octave

从八度 CLI 或八度 GUI,如果我运行

plot([1,2,3],[1,4,9])
Run Code Online (Sandbox Code Playgroud)

它将显示一个绘图窗口,我可以查看并与之交互。但是,如果我使用与内容相同的命令创建文件 myPlot.m

plot([1,2,3],[1,4,9])
Run Code Online (Sandbox Code Playgroud)

我运行它

octave myPlot.m
Run Code Online (Sandbox Code Playgroud)

然后我可以短暂地看到绘图窗口出现了几分之一秒并立即关闭。如何防止此窗口自行关闭?

八度 4.2.2 Ubuntu 18.04

Tas*_*nou 9

鉴于评论中的混乱,这是一个完整的示例。

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

#!/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')
Run Code Online (Sandbox Code Playgroud)

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

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

chmod +x ./plotWithoutExiting.m
Run Code Online (Sandbox Code Playgroud)

然后我可以通过运行它来运行文件:

./plotWithoutExiting.m
Run Code Online (Sandbox Code Playgroud)

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

octave ./plotWithoutExiting.m
Run Code Online (Sandbox Code Playgroud)

甚至

octave --eval "plotWithoutExiting"
Run Code Online (Sandbox Code Playgroud)

您还可以添加--no-gui选项以防止八度音阶 GUI 暂时弹出(如果有)。

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

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

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

希望这可以帮助。


Riy*_*eel 9

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

八度--persist myscript.m

或附加

等待(gcf)

在脚本末尾以防止情节结束