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

时间:2018-09-29 14:59:53

标签: plot window octave

从八度CLI或八度GUI(如果我运行)

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

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

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

我用它运行

octave myPlot.m

然后我可以短暂地看到绘图窗口出现了不到一秒钟的时间,并立即关闭了它。如何防止此窗口自行关闭?

八度4.2.2 Ubuntu 18.04

2 个答案:

答案 0 :(得分:2)

鉴于评论中的混乱之处,这里是一个完整的例子。

假设您创建了一个名为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')

Linux中的第一行对应于“ shebang”语法;这个特殊注释告诉bash shell运行哪个解释器来执行以下脚本。我在这里使用了八度可执行文件的位置,您的可能位于其他位置。相应地适应。

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

chmod +x ./plotWithoutExiting.m

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

./plotWithoutExiting.m

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

octave ./plotWithoutExiting.m

甚至

octave --eval "plotWithoutExiting"

您还可以添加--no-gui选项,以防止八度GUI突然弹出。

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

从理论上讲,如果您不希望收集图形句柄,则可以使用waitfor(gcf)暂停执行,直到最后一个活动图形对象被破坏为止。

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

希望这会有所帮助。

答案 1 :(得分:1)

以@terminal身份运行(需要稍后退出八度)

八度--persist myscript.m

或追加

waitfor(gcf)

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