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

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

в первый раз, когда я запустил его, у меня был brazillion предупреждения, а затем я получил эти отпечатки. Теперь, когда я их убрал, я их больше не вижу. Я предполагаю, что они застряли в буфере, и я увижу их, когда программа закончится или буфер заполняется.

есть ли способ принудительно сбросить буфер печати, чтобы я мог видеть свои отпечатки?

6 ответов


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


как отметил moastab, fflush(stdout) работает на октаву.

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

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

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

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


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

page_screen_output(0);

page_output_immediately(1);

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

это встроенная функция как в Октаве, так и в MATLAB. Более подробную информацию см. help diary.


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


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

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