Как я могу сбросить вывод disp в Matlab или Octave?
У меня есть программа в Octave, в которой есть цикл - запуск функции с различными параметрами, а не что-то, что я могу превратить в матрицы. В начале каждой итерации я печатаю текущие параметры, используя disp
,
В первый раз, когда я его запустил, у меня было несколько предупреждений, а затем я получил эти отпечатки. Теперь, когда я их почистил, я их больше не вижу. Я предполагаю, что они застряли в буфере, и я увижу их, когда программа закончится или буфер заполнится.
Есть ли способ принудительно очистить буфер печати, чтобы я мог видеть свои отпечатки?
6 ответов
Используйте fflush(stdout) и / или fflush(stderr), чтобы очистить буфер от disp().
Как упомянул моастаб, fflush(stdout)
работает на октаву.
В MATLAB используйте drawnow('update')
очистить вывод.
от Matlab drawnow
Функция знакома тем, кто хочет управлять графическими объектами перерисовки в MATLAB, но она также применима и к буферам stdr stdr. 'update'
опция не обязательна, но ограничивает сброс неграфическими очередями. Эта деталь просто подразумевается в документации drawnow(); Я проверил это для работы на вызовах fprintf в цикле.
Октава: Вы можете отключить буферизацию вывода, вызвав more off
,
Это отключит нумерацию страниц, так что весь вывод будет отправлен прямо на экран.
Поместите следующие команды в начале вашего раздела или вашего кода:
page_screen_output(0);
page_output_immediately(1);
Если я правильно понимаю ваш вопрос, вы можете использовать функцию дневника, чтобы вывести весь вывод сеанса в текстовый файл. diary on
начнет запись, и diary off
остановится. diary filename
будет использовать имя файла вместо по умолчанию "дневник".
Это встроенная функция в Octave и MATLAB. Для более подробной информации смотрите help diary
,
Также вы можете увеличить размер буфера Octave. В Windows это можно сделать в диалоговом окне "Свойства октавы" в верхнем левом углу меню.
Здесь и в других местах есть как минимум 5 способов получить немедленный вывод, в Octave.
Используйте одно из следующего:
%---------------------------
% Turn OFF output buffering
%---------------------------
more off % command & NOT shown in output
PAGER = "less" % built-in var - shown in output
page_screen_output = 0 % built-in var - shown in output
page_output_immediately = 1 % built-in var - shown in output
fflush(stdout) % Need to call after each "output" line
drawnow
приведет к обновлению графиков, я не уверен, работает ли он на stdout
труба, а также.
Вы также можете конвертировать ваши disp(...)
заявления к fprintf(stderr, ...)
, Я думаю stderr
обрабатывается иначе, чем stdout
в октаву