Getting octave to plot when invoking a function from the command line

谁都会走 提交于 2019-12-17 16:36:20

问题


I am trying to run a function in octave from the command line. The function is currently run like so:

octave --silent --persist --eval 'function(input arguments)'

function.m contains a plot command. When I invoke octave with the above command line parameters, the plot does show but octave enters into its interactive mode. My question is:

Is there any way to get octave to display the plot without entering the interactive mode when it is invoked from the command line?


回答1:


AFAIK, the plot window is a child process of octave and therefor can only be displayed when octave is running. Even if you plot something from the "interactive" mode leave the plot open and close octave, the plot will also disappear.
What you could do is to plot to some output file like posted here:

f = figure
set(f, "visible", "off")
plot([1,2,3,4])
print("MyPNG.png", "-dpng")



回答2:


Just use pause after your plotting functions




回答3:


You can use:

waitfor(h)

at the end, which waits for you to close the figure.




回答4:


You need to select a proper graphics toolkit:

available_graphics_toolkits 
ans = 
{
  [1,1] = fltk
  [1,2] = gnuplot
}

The default is fltk which cannot write to file without displaying the plot. However, if you select gnuplot it will be able to write to file without displaying it first. In your file start with:

graphics_toolkit gnuplot



回答5:


The problem is that when you run from command line, when it ends, the plot windows disappear with it.

#! /usr/bin/octave -qf
f = figure;
set(f, "visible", "off")

t=0:0.001:5*pi;
plot(t, sin(5*t)), grid

print("MyPNG.png", "-dpng")

This saves output to MyPNG.png in the directory where it is run.

Then you might open it with a visualization program.

Another option is to add

pause

at the end of the program so it waits for user input to terminate, therefore to close the plot window.

Cheers :)



来源:https://stackoverflow.com/questions/6843014/getting-octave-to-plot-when-invoking-a-function-from-the-command-line

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!