Как подавить предупреждения в октаве GNU

Я использую Octave версии 3.4.3 и получаю следующее предупреждение:

warning: fmincg.m: 
possible Matlab-style short-circut operator at line 104, column 20

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

Я знаю, что могу подавить ВСЕ предупреждения, поместив эту команду в начало моей октавной программы:

warning('off','all');

Но это отключает все предупреждения, что является плохой формой. Как отключить только этот?


person Eric Leschinski    schedule 08.07.2012    source источник


Ответы (3)


Отключить предупреждения по типу предупреждения в GNU Octave:

См. список предупреждений, их идентификаторы и названия здесь, в разделе: «12.2.2 Включение и отключение предупреждений». https://octave.sourceforge.io/octave/function/warning_ids.html

Имена и идентификаторы предупреждений перечислены с помощью команды octave:

help warning_ids

Поместите эту команду в свою октавную программу до того, как появится предупреждение:

warning('off', 'Octave:possible-matlab-short-circuit-operator');

или отключите все предупреждения с помощью

warning('off', 'all');

Примечание. Если ваше предупреждение выдается самим интерпретатором октавы до запуска вашего сценария, вам придется использовать другой подход. Например, используйте octave yourfile.m 2>/dev/null, который также имеет неприятный побочный эффект перенаправления stderr как движка октавы, так и вашего скрипта.

Некоторые предупреждения прерывают процесс, и их нельзя подавить, их необходимо устранить:

Как этот:

warning: function /home/el/octave/multicore-0.2.15/gethostname.m 
         shadows a built-in function

Чтобы это исправить, переименуйте /home/el/octave/multicore-0.2.15/gethostname.m в /home/el/octave/multicore-0.2.15/gethostname_backup.m. И предупреждение уходит. Это ошибка в программном обеспечении, когда два файла имеют одинаковое имя, поэтому программа не знает, какой из них использовать.

person Eric Leschinski    schedule 08.07.2012
comment
Это последнее предупреждение можно отключить с помощью: warning('off','Octave:shadowed-function'). Нет необходимости менять имена файлов. Программное обеспечение знает, какой файл использовать; первый файл, который он находит в своем path. Это не обман, это просто перегрузка функций. - person Gunther Struyf; 13.05.2013
comment
предупреждение больше не указано на gnu.org/software /octave/doc/interpreter/, поэтому полезно знать lastwarn (см. ответ @Scz ниже) - person seanv507; 20.08.2016

Чтобы узнать идентификатор вашего предупреждения, просто введите

[text, id] = lastwarn()

сразу после появления предупреждения. id теперь содержит идентификатор предупреждения, который можно использовать для его отключения:

warning('off', id)
person Scz    schedule 23.03.2015
comment
Документация по этой функции: octave.sourceforge.io/octave/function/lastwarn.html - person waldyrious; 14.12.2017

Сделайте ваши изменения постоянными, выполнив два простых шага:

  1. стать корнем
  2. добавьте команду в файл (/usr/share/octave/site/m/startup/octaverc), которая будет выполнять любые команды Octave при запуске.

    echo "warning('off','Octave:shadowed-function')" >> /usr/share/octave/site/m/startup/octaverc

Мне также нравится настойчиво автоматически загружать все пакеты:

echo "pkg load all" >> /usr/share/octave/site/m/startup/octaverc

Примечание. Следуйте этому порядку, в противном случае все предупреждения о теневых функциях, которые вы получаете при загрузке всех пакетов, все равно будут появляться.

теперь ваш файл должен содержать

warning('off','Octave:shadowed-function')
pkg load all

Спасибо Gunther Struyf за то, что он рассказал нам, как отключить предупреждения о скрытых функциях (выше). Ссылка: https://wiki.archlinux.org/index.php/Octave

person BBW Before Windows    schedule 09.07.2014
comment
Я думаю, что вам не нужно становиться root, если вы просто поместите команду в ~/.octaverc. - person Scz; 23.03.2015
comment
@Scz Ты прав. Спасибо за замечание. Чтобы внести общесистемные изменения, используйте указанный выше путь /usr. Чтобы внести изменения только в свой профиль пользователя, отредактируйте ~/.octaverc - person BBW Before Windows; 24.03.2015