【问题标题】:How to suppress warnings in GNU octave如何抑制 GNU octave 中的警告
【发布时间】:2012-07-08 05:17:19
【问题描述】:

我使用的是 Octave 版本 3.4.3,我收到以下警告:

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

我知道为什么会出现这个警告,我只是想让警告在运行时不出现在屏幕上。

我知道我可以通过将此命令放在八度程序的顶部来抑制所有警告:

warning('off','all');

但这会禁用所有错误形式的警告。如何只禁用这个?

【问题讨论】:

  • 我在 Octave 函数的标题中添加了行 'warning('all','off')',但是当我以批处理模式运行脚本时,我仍然有警告。请问有什么解决方法吗?

标签: linux octave suppress-warnings


【解决方案1】:

在 GNU Octave 中按警告类型禁用警告:

在“12.2.2 启用和禁用警告”部分中查看警告列表及其警告 ID 和名称。 https://octave.sourceforge.io/octave/function/warning_ids.html

警告名称和 id 使用 octave 命令列出:

help warning_ids

在警告出现之前将此命令放入您的 octave 程序中:

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

或使用

禁用所有警告
warning('off', 'all');

注意:如果您的警告是在您的脚本运行之前由 octave 解释器本身抛出的,那么您将不得不采取不同的方法。例如使用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。警告消失了。这是软件中的一个错误,其中两个文件具有相同的名称,因此程序不知道该使用哪个。

【讨论】:

  • 可以使用warning('off','Octave:shadowed-function') 禁用最后一个警告。无需更改文件名。该软件确实知道要使用哪个文件;它在path 中找到的第一个文件。这不是诡计,它只是重载函数。
  • 警告不再在gnu.org/software/octave/doc/interpreter/… 中列出,了解lastwarn 非常有用(请参阅下面的@Scz 答案)
【解决方案2】:

要找出警告的 ID,只需发出

[text, id] = lastwarn()

在警告发生之后。 id 现在包含警告的 id,可用于将其关闭:

warning('off', id)

【讨论】:

【解决方案3】:

通过两个简单的步骤使您的更改持久化:

  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

【讨论】:

  • 我认为你不需要成为root,如果你把命令放在~/.octaverc.
  • @Scz 你是对的。感谢您的注意。要在系统范围内进行更改,请使用上面的 /usr 路径。要仅对您的用户配置文件进行更改,请编辑 ~/.octaverc
猜你喜欢
  • 2021-06-03
  • 1970-01-01
  • 2019-02-25
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多