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
鉴于评论中的混乱,这是一个完整的示例。
假设您创建了一个名为 的脚本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 暂时弹出(如果有)。
然后应该运行上面的脚本,将绘图捕获到图形对象句柄中h
。
waitfor(h)
然后暂停程序流程,直到图形对象被销毁(例如通过手动关闭窗口)。
理论上,如果您不关心收集图形句柄,您可以使用waitfor(gcf)
暂停执行,直到最后一个活动图形对象被销毁。
一旦发生这种情况,程序将继续正常运行,直到退出。如果您没有在交互模式下运行八度音程解释器,这通常也会退出八度音程环境(--persist
如果这不是您想要的,您可以通过使用该选项来防止这种情况)。
希望这可以帮助。