12

Octaveバージョン3.4.3を使用していますが、次の警告が表示されます。

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

この警告が発生する理由はわかっています。実行時に警告が画面に表示されないようにしたいだけです。

このコマンドをオクターブプログラムの先頭に配置することで、すべての警告を抑制できることを知っています。

warning('off','all');

しかし、それは悪い形式であるすべての警告を無効にします。これだけを無効にする方法は?

4

3 に答える 3

16

GNUOctaveの警告タイプによる警告を無効にします。

警告のリストとその警告IDおよび名前については、「12.2.2警告の有効化と無効化」のセクションを参照してください。 https://octave.sourceforge.io/octave/function/warning_ids.html

警告の名前とIDは、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に変更します。そして、警告は消えます。これは、2つのファイルが同じ名前であるというソフトウェアのバグであるため、プログラムはどちらを使用するかを認識しません。

于 2012-07-08T15:44:00.213 に答える
8

警告のIDを確認するには、

[text, id] = lastwarn()

警告が発生した直後。id警告のIDが含まれるようになりました。これを使用して、警告をオフに切り替えることができます。

warning('off', id)
于 2015-03-23T16:30:35.743 に答える
4

2つの簡単なステップで変更を永続化します。

  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

シャドウ関数の警告(上記)をオフにする方法を教えてくれたGuntherStruyfに感謝します。参照:https ://wiki.archlinux.org/index.php/Octave

于 2014-07-09T02:11:04.040 に答える