7

inf両方のように見えInf、MATLAB ではまったく同じです (同様nanに とNaNですが、 ではありませんNan)。違いはありますか?

>> which inf
built-in (/Applications/MATLAB_R2011b.app/toolbox/matlab/elmat/inf)
>> which Inf
built-in (/Applications/MATLAB_R2011b.app/toolbox/matlab/elmat/Inf)

それらが同じである場合、実際にはどちらを使用する必要がありますか? 配列を割り当てるために、私はx = inf(3,5)以下のスタイルを使用してzerosおりones、すべて小文字です。単一の値を割り当てるには、 を使用しますx = Inf。これは一貫した使用だと思いますか?

4

2 に答える 2

12

最も慣用的に一貫しているのはnanandinfですが、MATLAB では、and を大文字にする別の方法が提供NaNされていますInf。たとえば、印刷物など、他の場所で見つける方法です。MATLAB では大文字と小文字が区別されることに注意してくださいNanorは誰も使用InFしないため、MATLAB はこれらの「エイリアス」を提供しません。

編集: のようにデータ ベクトルで使用する場合[3.7, 1.2, NaN, 3.1]、私は一貫しNaNて同様に使用していることに気づきますが、次の実験は、この使用がMATLAB の内部動作と密接ではないことを非常に強く示唆しています。4 を返す関数を作成し、現在のフォルダーに保存します。上記のようにベクトルを定義すると、MATLAB が定数を認識せず、MATLAB のイディオムに従って、すべて小文字で綴る必要がある関数を検索することが示されます。n = NaN()NaN.m[3.7, 1.2, 4.0, 3.1] NaN

忘れる前にさっと削除して、データ列でNaN.m使い続けましょう。NaN

于 2013-01-10T22:32:08.083 に答える
2

以下は、MATLAB が使用しているように見える規則です。

非数の場合: 常に使用しますNaN(次のような組み合わせを除く)。isnan()

無限の場合:inf関数に使用Infし、値に使用します (INFs倍数にも使用しますが、もちろんこれはコマンドではありません)。infの評価が を与えることを意味するため、これは少し注意が必要Infです。

以下から推測:

help Inf: inf(N) は、INF の N 行 N 列の行列です。

help nan: NaN(N) は NaN の N 行 N 列の行列です。

help isnan: たとえば、isnan([pi NaN Inf -Inf]) は [0 1 0 0] です。

于 2013-01-11T12:42:13.107 に答える