配列の索引付けは、効率的な配列の事前割り当てに使用できます。例えば
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
なんで ?
NaN
Inf
かっこなしで使用すると、特殊変数のように見えます。
しかし、それらは実際には関数です。
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 ()
評価されます (もはや関数ではありません)。に評価されます。NaN
ones(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]
.