Как я могу очистить вывод disp в Matlab или Octave?
У меня есть программа в Октаве, которая имеет цикл, выполняющий функцию с различными параметрами, а не то, что я могу превратить в матрицы. В начале каждой итерации я печатаю текущие параметры, используя disp
.
в первый раз, когда я запустил его, у меня был brazillion предупреждения, а затем я получил эти отпечатки. Теперь, когда я их убрал, я их больше не вижу. Я предполагаю, что они застряли в буфере, и я увижу их, когда программа закончится или буфер заполняется.
есть ли способ принудительно сбросить буфер печати, чтобы я мог видеть свои отпечатки?
6 ответов
как отметил moastab, fflush(stdout)
работает на октаву.
в MATLAB используйте drawnow('update')
очистить выход.
'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
на октаву.