Получение октавы для построения графика при вызове функции из командной строки
Я пытаюсь запустить функцию в octave
из командной строки. В настоящее время функция запускается так:
octave --silent --persist --eval 'function(input arguments)'
function.m
содержит plot
команда. Когда я призываю octave
с указанными выше параметрами командной строки график действительно отображается, но октава переходит в интерактивный режим. Мой вопрос:
Есть ли способ заставить октаву отображать график, не переходя в интерактивный режим, когда он вызывается из командной строки?
5 ответов
AFAIK, окно графика является дочерним процессом октавы и поэтому может отображаться только когда октава работает. Даже если вы строите что-либо из "интерактивного" режима, оставьте график открытым и закройте октаву, график также исчезнет.
Что вы можете сделать, так это построить какой-нибудь выходной файл, такой как опубликованный здесь:
f = figure
set(f, "visible", "off")
plot([1,2,3,4])
print("MyPNG.png", "-dpng")
Ты можешь использовать:
waitfor(h)
в конце, который ждет вас, чтобы закрыть фигуру.
Вам нужно выбрать подходящий графический инструментарий:
available_graphics_toolkits
ans =
{
[1,1] = fltk
[1,2] = gnuplot
}
По умолчанию fltk
который не может записать в файл без отображения графика. Однако, если вы выберете gnuplot
он сможет записывать в файл, не отображая его первым. В вашем файле начните с:
graphics_toolkit gnuplot
Проблема в том, что при запуске из командной строки, когда она заканчивается, окна графиков исчезают вместе с ней.
#! /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")
Это сохраняет вывод в MyPNG.png в каталоге, где он запускается.
Тогда вы можете открыть его с помощью программы визуализации.
Другой вариант - добавить
pause
в конце программы, поэтому он ожидает завершения ввода пользователем, поэтому закрывает окно графика.
Ура:)
Also can try wait for key.
while (waitforbuttonpress ()==0) pause(1) end