配列の索引付けは、効率的な配列の事前割り当てに使用できます。例えば
2(ones(1, 3))
ans =
2 2 2
ただし、これは NaN または Inf では機能しません
NaN(ones(1, 3))
ans = NaN
なんで ?
配列の索引付けは、効率的な配列の事前割り当てに使用できます。例えば
2(ones(1, 3))
ans =
2 2 2
ただし、これは NaN または Inf では機能しません
NaN(ones(1, 3))
ans = NaN
なんで ?
NaNInfかっこなしで使用すると、特殊変数のように見えます。
しかし、それらは実際には関数です。
NaN(ones (1, 3))NaN ([1, 1, 1])どうやら のように評価されるように展開されNaN (1, 1, 1)ます。つまり1x1x1、要素が 1 つしかない配列です。
1x3 NaN 配列を初期化する正しい方法は次のとおりです。
NaN (1, 3)
についても同じですInf。
@carandraug の提案に従って、ここに少し余談があります。
も使用できますNaN ()(ones(1, 3))。
この式では、スカラー値にNaN ()評価されます (もはや関数ではありません)。に評価されます。NaNones(1, 3)[1, 1, 1]
したがって、中間ステップは と読むことができます<NaN scalar value>([1 1 1])。
次に、索引付けの仕組みを思い出してください。A整数の配列を持つ配列のインデックス付けindexesが書かれてA(indexes)います。例えば
A([i1, i2, i3])
indexesこれにより、 (ここでは 1x3)と同じサイズの配列が用意されます。この新しい配列の各要素はA、 の対応する要素によって指定されたインデックスを持つ の要素の値を取得しますindexes。あれは
[A(i1), A(i2), A(i3)]
したがって2(ones (1, 3))、 ieの結果2([1, 1, 1])は明らかに[2(1), 2(1), 2(1)]です。すなわち[2, 2, 2]。(スカラーは単一要素配列として解釈できることを思い出してください。つまり2(1)、配列の最初の要素、つまり を意味[2]します2)。
同様に、中間ステップ<NaN scalar value>([1 1 1])は最終的に変換されます
[<NaN scalar value>, <NaN scalar value>, <NaN scalar value>]
または単に[NaN, NaN, NaN].