MATLAB 帮助中心
本页采用了机器翻译。点击此处可查看最新英文版本。
对代码生成的边界支持
自 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 是标量,则返回数组的大小为 szxsz。
sz
示例
bnd = optim.coder.infbound(n1,n2,...,nt) 返回一个大小为 n1xn2x...xnt 的无限边界数组,包含标量值 n1、n2、…、nt。
n
n1
n2
nt
bnd = optim.coder.infbound(___,typename) 为任何先前的语法指定 bnd 的数据类型(类)。
typename
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"
"like"
ub2 = [optim.coder.infbound("single") single(1) single(10)]
ub2 = 1×3 single row vector Inf 1 10
s0 = single(0); lb2 = [s0 -optim.coder.infbound("like",s0) s0]
lb2 = 1×3 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 是标量,则返回数组的大小为 szxsz。
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"。如果您使用 Disable Support for Nonfinite Numbers (MATLAB Coder)(例如,通过在关联的代码生成配置对象中将 NonFiniteSupport 设置为 false),则输出条目为 realmax(typename)。
NonFiniteSupport
false
realmax(typename)
您不能同时指定 typename 和 "like",p。
"like",p
目前只有 fmincon 支持单精度代码生成。
fmincon
数据类型: char | string
char
string
输出数据原型,指定为 "double" 或 "single" 类的数字变量。如果您使用 Disable Support for Nonfinite Numbers (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
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处