我正在使用 Octave 版本 3.4.3,并收到以下警告:
warning: fmincg.m:
possible Matlab-style short-circut operator at line 104, column 20
我知道为什么会出现这个警告,我只是想让警告在运行时不会出现在屏幕上。
我知道我可以通过将此命令放在八度程序的顶部来抑制所有警告:
warning('off','all');
但这会禁用所有错误形式的警告。如何只禁用这个?
我正在使用 Octave 版本 3.4.3,并收到以下警告:
warning: fmincg.m:
possible Matlab-style short-circut operator at line 104, column 20
我知道为什么会出现这个警告,我只是想让警告在运行时不会出现在屏幕上。
我知道我可以通过将此命令放在八度程序的顶部来抑制所有警告:
warning('off','all');
但这会禁用所有错误形式的警告。如何只禁用这个?
在 GNU Octave 中按警告类型禁用警告:
请参阅此处的警告列表及其警告 ID 和名称:“12.2.2 启用和禁用警告”部分。 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 解释器本身抛出的,那么您将不得不采取不同的方法。例如 use octave yourfile.m 2>/dev/null
which 也有重定向 octave 引擎和脚本的 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。警告消失了。这是软件中的一个错误,其中两个文件具有相同的名称,因此程序不知道该使用哪个文件。
要找出警告的 ID,只需发出
[text, id] = lastwarn()
警告发生后直接。id
现在包含警告的 id,可用于将其关闭:
warning('off', id)
通过两个简单的步骤使您的更改持久化:
将命令附加到文件 (/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