ヘルプ センターヘルプ センター
typename
"like"
コード生成の無限境界サポート
R2022b 以降
bnd = optim.coder.infbound
bnd = optim.coder.infbound(sz)
bnd = optim.coder.infbound(n1,n2,...,nt)
bnd = optim.coder.infbound(___,typename)
bnd = optim.coder.infbound(___,"like",p)
bnd = optim.coder.infbound は、コード生成で使用する無限境界を作成します。bnd は Inf をサポートしないコード生成ターゲットの無限境界を表します。
bnd
Inf
例
bnd = optim.coder.infbound(sz) は、引数 sz と同じサイズの無限境界配列を返します。sz がスカラーの場合、返される配列のサイズは sz 行 sz 列です。
sz
bnd = optim.coder.infbound(n1,n2,...,nt) は、スカラー値 n1、n2、...、nt に対して、サイズが n1×n2×...×nt の無限境界配列を返します。
n
n1
n2
nt
bnd = optim.coder.infbound(___,typename) は、前述の任意の構文に対して bnd のデータ型 (クラス) を指定します。
bnd = optim.coder.infbound(___,"like",p) は、bnd が数値変数 p と同じデータ型になるように指定します。
p
すべて折りたたむ
コード生成のターゲット ハードウェアが、境界として Inf または –Inf を常に受け入れるとは限りません。この場合は、optim.coder.infbound を使用して境界を表現します。
optim.coder.infbound
たとえば、問題の上限が [Inf,1,10]、つまり x(2) <= 1 および x(3) <= 10 で、x(1) に対しては上限がないものとします。また、この問題の下限は [0,–Inf,0]、つまり x(1) >= 0 および x(3) >= 0 であり、x(2) に対しては下限がありません。このような境界は複数の方法で表現できます。
[Inf,1,10]
x(2) <= 1
x(3) <= 10
x(1)
[0,
Inf,0]
x(1) >= 0
x(3) >= 0
x(2)
ub1 = [optim.coder.infbound 1 10]
ub1 = 1×3 Inf 1 10
lb1 = [0 -optim.coder.infbound 0]
lb1 = 1×3 0 -Inf 0
% Or ub = optim.coder.infbound(1,3); ub(2) = 1; ub(3) = 10
ub = 1×3 Inf 1 10
lb = -optim.coder.infbound([1,3]); lb(1) = 0; lb(3) = 0
lb = 1×3 0 -Inf 0
ターゲット ハードウェアによっては、"single" データしかサポートしていないものもあります。typename 構文または "like" 構文を使用して適切な境界を生成します。
"single"
ub2 = [optim.coder.infbound("single") single(1) single(10)]
ub2 = 1x3 single row vector Inf 1 10
s0 = single(0); lb2 = [s0 -optim.coder.infbound("like",s0) s0]
lb2 = 1x3 single row vector 0 -Inf 0
これらの結果は MATLAB® のコードを実行すると生成され、MATLAB Inf 出力に表示されます。コード生成の optim.coder.infbound を実行すると、ターゲット ハードウェアに適した境界が得られます。
Copyright 2022–2024 The MathWorks, Inc.
返される Inf 配列のサイズ。非負の整数のベクトルとして指定します。通常、返される配列のサイズは sz(1)×sz(2)×...×sz(t) です。ここで、t は sz の成分の数です。ただし、sz がスカラーの場合、返される配列のサイズは sz 行 sz 列です。
sz(1)
sz(2)
sz(t)
t
sz のいずれかのエントリがゼロである場合、返される配列は空になります。
例: [2,3,1,4]
[2,3,1,4]
データ型: double
double
Inf 配列成分のサイズ。非負の整数として指定します。n が 0 である場合、返される配列は空になります。
例: 2
2
"double"
出力データ型。"double" または "single" として指定します。非有限数のサポートの無効化 (MATLAB Coder)を行っている場合 (たとえば、関連するコード生成構成オブジェクトで NonFiniteSupport が false に設定されている場合)、出力のエントリは realmax(typename) になります。
NonFiniteSupport
false
realmax(typename)
typename と "like",p の両方を指定することはできません。
"like",p
単精度コード生成は、現時点では fmincon でのみサポートされています。
fmincon
データ型: char | string
char
string
出力データ プロトタイプ。クラス "double" または "single" の数値変数として指定します。非有限数のサポートの無効化 (MATLAB Coder)を行っている場合 (たとえば、関連するコード生成構成オブジェクトで NonFiniteSupport が false に設定されている場合)、出力のエントリは realmax(class(p)) になります。
realmax(class(p))
Optimization Toolbox™ ソルバーのコード生成には、fmincon でのコード生成の背景、quadprog 用のコード生成の背景、線形最小二乗のコード生成: 背景および非線形最小二乗のコード生成:背景に記述されている要件が適用されます。具体例:
ソルバーは、関数 codegen (MATLAB Coder) または MATLAB® Coder™ アプリを使用したコード生成をサポートしています。コードを生成するには MATLAB Coder ライセンスが必要です。
codegen
lsqlin の場合、lb 引数と ub 引数は、C の列数と同じ数のエントリをもつか、空 [] でなければなりません。それ以外の場合、lb 引数と ub 引数は、x0 引数と同じ数のエントリをもつか、空 [] でなければなりません。
lsqlin
lb
ub
C
[]
x0
単精度ハードウェア用のコードを生成できるのは fmincon だけです。詳細については、fmincon でのコード生成の背景を参照してください。
すべて展開する
単精度コード生成をサポートするために、optim.coder.infbound で引数 typename と "like",p を受け入れるようになりました。
fmincon | quadprog | lsqlin | lsqcurvefit | lsqnonlin
quadprog
lsqcurvefit
lsqnonlin
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Contact your local office