Как я могу сбросить вывод disp в Matlab или Octave?

29

У меня есть программа в Octave, которая имеет цикл - работает функция с различными параметрами, а не то, что я могу превратить в матрицы. В начале каждой итерации я печатаю текущие параметры с помощью disp.

В первый раз, когда я его запустил, у меня были предупреждения

Теги:
octave
flush

6 ответов

38
Лучший ответ

Используйте fflush (stdout) и/или fflush (stderr), чтобы очистить буфер от disp().

  • 10
    Из любопытства вы знаете, есть ли Matlab, эквивалентный fflush ()? Я хотел бы сделать то же самое, но я использую Matlab, а не Octave, и там нет функции fflush ().
  • 4
    В MATLAB используйте drawnow('update') чтобы очистить вывод.
27

Как упоминалось moastab, fflush(stdout) работает для Octave.

В MATLAB используйте drawnow('update') для очистки вывода.

Функция MATLAB drawnow знакома тем, кто хочет управлять перерисованными графическими объектами в MATLAB, но это относится и к буферам stdout stderr. Опция 'update' не требуется, но ограничивает промывку неграфическими очередями. Эта деталь просто подразумевается в документации drawow(); Я проверил его для работы с вызовами fprintf в цикле.

18

Octave. Вы можете отключить буферизацию вывода, вызвав more off.

Это отключит разбиение на страницы так, что весь вывод будет отправлен непосредственно на экран.

5

Поместите следующие команды в начале раздела или кода:

page_screen_output(0);

page_output_immediately(1);
3

Если я правильно понимаю ваш вопрос, вы можете использовать функцию дневник, чтобы вывести весь вывод сеанса в текстовый файл. diary on начнет запись, а diary off остановится. diary filename будет использовать имя файла вместо стандартного "дневника".

Это встроенная функция как в Octave, так и в MATLAB. Подробнее см. help diary.


Также вы можете увеличить размер буфера Octave. В Windows вы можете сделать это в диалоговом окне "Свойства октавы" в верхнем левом углу.

0

drawnow приведет к обновлению графиков, я не уверен, работает ли он на канале stdout.

Вы также можете преобразовать операторы disp(...) в fprintf(stderr, ...), я думаю, что stderr обрабатывается иначе, чем stdout на Octave.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню