Я хочу подавить вывод переменных в наборе функций Matlab. Проблема в том, что автор забыл ";" на многих позициях в коде. Для цели отладки этот вывод полезен, но теперь я хочу его подавить, не просматривая весь код для отсутствующих ";". Есть ли возможность отключить этот вид вывода?
Подавление выхода
Ответ 1
Вы можете подавить вывод с помощью evalc, но это требует, чтобы вы передавали свое выражение в виде строки. Например, если вы использовали:
[A,B,C] = notMyFunction(d,e,f);
Вместо этого вы можете использовать
[T,A,B,C] = evalc('notMyFunction(d,e,f);');
И любой вывод, который отправился на консоль, теперь будет буферизирован и сохранен в T
.
Ответ 2
Извините, но нет простого способа отключить отображение в окне команд, если вы не можете добавить полуколоны. Просто добавьте полуколоны самостоятельно.
Да, вы можете перегрузить disp и display, не позволяя им работать так, как они должны были делать, но тогда они также не смогли бы работать при нормальных обстоятельствах. Вы нарушаете ценную часть Matlab.
И извините, но добавление точки с запятой в конец вызова функции не влияет на то, что внутренние линии не имеют полуколоней. Те внутренне уничтоженные строки по-прежнему будут выгружать результаты в окно команд.
Ответ 3
Как насчет вызова этих функций с точкой с запятой в конце? Поэтому вместо вызова
my_function()
просто введите
my_function();
Изменить: http://www.mathworks.de/help/techdoc/ref/evalc.html evalc('my_function()');
Edit2: слишком поздно
Ответ 4
при вызове функции вам нужно поместить знак ";" в конец, иначе будет отображаться вывод, независимо от функции пользователя или предопределенных функций, заданных в Matlab.