Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

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

page_screen_output(0);

page_output_immediately(1);

Ответ 5

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

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


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

Ответ 6

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

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