У меня есть программа в Octave, которая имеет цикл - работает функция с различными параметрами, а не то, что я могу превратить в матрицы. В начале каждой итерации я печатаю текущие параметры с помощью disp
.
В первый раз, когда я его запустил, у меня были предупреждения
Используйте fflush (stdout) и/или fflush (stderr), чтобы очистить буфер от disp().
drawnow('update')
чтобы очистить вывод.
Как упоминалось moastab, fflush(stdout)
работает для Octave.
В MATLAB используйте drawnow('update')
для очистки вывода.
Функция MATLAB drawnow
знакома тем, кто хочет управлять перерисованными графическими объектами в MATLAB, но это относится и к буферам stdout stderr. Опция 'update'
не требуется, но ограничивает промывку неграфическими очередями. Эта деталь просто подразумевается в документации drawow(); Я проверил его для работы с вызовами fprintf в цикле.
Octave. Вы можете отключить буферизацию вывода, вызвав more off
.
Это отключит разбиение на страницы так, что весь вывод будет отправлен непосредственно на экран.
Поместите следующие команды в начале раздела или кода:
page_screen_output(0);
page_output_immediately(1);
Если я правильно понимаю ваш вопрос, вы можете использовать функцию дневник, чтобы вывести весь вывод сеанса в текстовый файл. diary on
начнет запись, а diary off
остановится. diary filename
будет использовать имя файла вместо стандартного "дневника".
Это встроенная функция как в Octave, так и в MATLAB. Подробнее см. help diary
.
Также вы можете увеличить размер буфера Octave. В Windows вы можете сделать это в диалоговом окне "Свойства октавы" в верхнем левом углу.
drawnow
приведет к обновлению графиков, я не уверен, работает ли он на канале stdout
.
Вы также можете преобразовать операторы disp(...)
в fprintf(stderr, ...)
, я думаю, что stderr
обрабатывается иначе, чем stdout
на Octave.