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 在弹出时立即弹出。
然后上面的脚本应该 运行,将绘图捕获到图形对象句柄中 h
。
waitfor(h)
然后暂停程序流,直到图形对象被销毁(例如通过手动关闭 window)。
理论上,如果您不想收集图形句柄,您可以使用waitfor(gcf)
暂停执行,直到最后一个活动图形对象被销毁。
一旦发生这种情况,程序将正常继续,直到退出。如果你不是 运行 在交互模式下使用八度解释器,这通常也会退出八度环境(如果这不是你想要的,你可以使用 --persist
选项来防止这种情况)。
希望这对您有所帮助。
运行 @terminal as(稍后需要退出octave)
octave --persist myscript.m
或追加
等待(gcf)
在脚本结尾以防止剧情结束
从 Octave CLI 或 Octave GUI,如果我 运行
plot([1,2,3],[1,4,9])
它将显示一个情节 window 我可以查看并与之互动。但是,如果我使用与 content
相同的命令创建文件 myPlot.mplot([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 在弹出时立即弹出。
然后上面的脚本应该 运行,将绘图捕获到图形对象句柄中 h
。
waitfor(h)
然后暂停程序流,直到图形对象被销毁(例如通过手动关闭 window)。
理论上,如果您不想收集图形句柄,您可以使用waitfor(gcf)
暂停执行,直到最后一个活动图形对象被销毁。
一旦发生这种情况,程序将正常继续,直到退出。如果你不是 运行 在交互模式下使用八度解释器,这通常也会退出八度环境(如果这不是你想要的,你可以使用 --persist
选项来防止这种情况)。
希望这对您有所帮助。
运行 @terminal as(稍后需要退出octave)
octave --persist myscript.m
或追加
等待(gcf)
在脚本结尾以防止剧情结束