行列引数
Optimization Toolbox™ ソルバーは、初期点 x0
、下限 lb
、上限 ub
など、多くの引数のベクトルを受け入れます。また、これらの引数の行列も受け入れます。ここで、行列は任意のサイズの配列を意味します。ソルバーの引数がベクトルではなくもともと配列である場合、引数を配列として指定できます。
ソルバーでは行列引数は以下のように扱われます。
処理を始める前に、行列引数はソルバーによって内部的にベクトルに変換されます。たとえば、
x0
はx0(:)
になります。この構文の説明は、colon
のA(:)
エントリ、または配列インデックス付けの「単一のインデックスによるインデックス付け」の節を参照してください。出力では、ソルバーが解
x
を入力x0
と同じサイズに再形成します。x0
が行列の場合、ソルバーはx
をx0
と同じサイズの行列として目的関数と任意の非線形制約関数の両方に渡します。ただし、線形制約では
x
をベクトル形式x(:)
で受け取ります。つまり、次の形式の線形制約A*x ≤ b
またはAeq*x = beq
は、
x
を行列ではなくベクトルとして受け入れます。行列A
またはAeq
の列数がx0
の要素数と同じであることを確認してください。同じでない場合は、ソルバーでエラーが発生します。