ga
用遗传算法求函数的最小值
语法
说明
示例
在运行此示例时包含 ps_example.m
文件。绘制函数。
xi = linspace(-6,2,300); yi = linspace(-4,4,300); [X,Y] = meshgrid(xi,yi); Z = ps_example([X(:),Y(:)]); Z = reshape(Z,size(X)); surf(X,Y,Z,'MeshStyle','none') colormap 'jet' view(-26,43) xlabel('x(1)') ylabel('x(2)') title('ps\_example(x)')
使用 ga
求此函数的最小值。
rng default % For reproducibility x = ga(@ps_example,2)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
-4.6793 -0.0860
使用遗传算法在区域 x(1) + x(2) >= 1
和 x(2) <= 5 + x(1)
上最小化 ps_example
函数。在运行此示例时包含此函数。
首先,将两个不等式约束转换为矩阵形式 A*x <= b
。换句话说,将 x
变量移到不等式的左侧,使两个不等式都转换为小于或等于形式:
-x(1) -x(2) <= -1
-x(1) + x(2) <= 5
A = [-1,-1; -1,1]; b = [-1;5];
使用 ga
求解有约束问题。
rng default % For reproducibility fun = @ps_example; x = ga(fun,2,A,b)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
0.9992 0.0000
在约束容差默认值 1e-3
范围内满足这些约束。要验证这一点,请计算 A*x' - b
,它应具有负分量。
disp(A*x' - b)
0.0008 -5.9992
使用遗传算法在区域 x(1) + x(2) >= 1
和 x(2) == 5 + x(1)
上最小化 ps_example
函数。在运行此示例时包含此函数。
首先,将这两个约束转换为矩阵形式 A*x <= b
和 Aeq*x = beq
。换句话说,将 x
变量移到不等式的左侧,使两个不等式都转换为小于或等于形式:
-x(1) -x(2) <= -1
-x(1) + x(2) == 5
A = [-1 -1]; b = -1; Aeq = [-1 1]; beq = 5;
使用 ga
求解有约束问题。
rng default % For reproducibility fun = @ps_example; x = ga(fun,2,A,b,Aeq,beq)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
-2.0005 2.9995
检查在 ConstraintTolerance
的默认值 1e-3
范围内是否满足这些约束。
disp(A*x' - b)
1.0000e-03
disp(Aeq*x' - beq)
-1.5494e-05
使用遗传算法在区域 x(1) + x(2) >= 1
和 x(2) == 5 + x(1)
上最小化 ps_example
函数。运行此示例时包含 ps_example
函数。此外,设置边界 1 <= x(1) <= 6
和 -3 <= x(2) <= 8
。
首先,将这两个线性约束转换为矩阵形式 A*x <= b
和 Aeq*x = beq
。换句话说,将 x
变量移到不等式的左侧,使两个不等式都转换为小于或等于形式:
-x(1) -x(2) <= -1
-x(1) + x(2) == 5
A = [-1 -1]; b = -1; Aeq = [-1 1]; beq = 5;
设置边界 lb
和 ub
。
lb = [1 -3]; ub = [6 8];
使用 ga
求解有约束问题。
rng default % For reproducibility fun = @ps_example; x = ga(fun,2,A,b,Aeq,beq,lb,ub)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
1.0000 6.0000
检查在 ConstraintTolerance
的默认值 1e-3
范围内是否满足这些线性约束。
disp(A*x' - b)
-6.0000
disp(Aeq*x' - beq)
-6.6335e-07
使用遗传算法在区域 和 上最小化 ps_example
函数。运行此示例时包含 ps_example
函数。
为此,请使用函数 ellipsecons.m
,该函数在第一个输出 c
中返回不等式约束,在第二个输出 ceq
中返回等式约束。运行此示例时包含 ellipsecons
函数。检查 ellipsecons
代码。
type ellipsecons
function [c,ceq] = ellipsecons(x) c = 2*x(1)^2 + x(2)^2 - 3; ceq = (x(1)+1)^2 - (x(2)/2)^4;
包含 ellipsecons
的函数句柄作为 nonlcon
参量。
nonlcon = @ellipsecons; fun = @ps_example; rng default % For reproducibility x = ga(fun,2,[],[],[],[],[],[],nonlcon)
Optimization finished: average change in the fitness value less than options.FunctionTolerance and constraint violation is less than options.ConstraintTolerance.
x = 1×2
-0.9766 0.0362
检查在 x
处是否满足非线性约束。当 c
≤ 0 且 ceq
= 0 时,在 ConstraintTolerance
的默认值 1e-3
范围内满足约束。
[c,ceq] = nonlcon(x)
c = -1.0911
ceq = 5.4645e-04
使用小于默认值的约束容差和遗传算法在区域 x(1) + x(2) >= 1
和 x(2) == 5 + x(1)
上最小化 ps_example
函数。运行此示例时包含 ps_example
函数。
首先,将这两个约束转换为矩阵形式 A*x <= b
和 Aeq*x = beq
。换句话说,将 x
变量移到不等式的左侧,使两个不等式都转换为小于或等于形式:
-x(1) -x(2) <= -1
-x(1) + x(2) == 5
A = [-1 -1]; b = -1; Aeq = [-1 1]; beq = 5;
要获得更准确的解,请将约束容差设置为 1e-6
。为了监控求解器进度,请设置一个绘图函数。
options = optimoptions('ga','ConstraintTolerance',1e-6,'PlotFcn', @gaplotbestf);
求解最小化问题。
rng default % For reproducibility fun = @ps_example; x = ga(fun,2,A,b,Aeq,beq,[],[],[],options)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
-2.0000 3.0000
检查在 1e-6
范围内是否满足线性约束。
disp(A*x' - b)
9.9967e-07
disp(Aeq*x' - beq)
-2.9701e-08
在 x(1)
为整数的约束下,使用遗传算法最小化 ps_example
函数。在运行此示例时包含此函数。
intcon = 1; rng default % For reproducibility fun = @ps_example; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; nonlcon = []; x = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon)
ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and the constraint violation is less than options.ConstraintTolerance.
x = 1×2
-5.0000 -0.0834
使用遗传算法最小化有整数约束的非线性问题。获得最小值的位置和最小函数值。运行此示例时包含目标函数 ps_example
。
intcon = 1; rng default % For reproducibility fun = @ps_example; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; nonlcon = []; [x,fval] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon)
ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and the constraint violation is less than options.ConstraintTolerance.
x = 1×2
-5.0000 -0.0834
fval = -1.8344
将此结果与没有约束的问题的解进行比较。
[x,fval] = ga(fun,2)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
-4.6906 -0.0078
fval = -1.9918
使用遗传算法在 x(1)
为整数值的约束下最小化 ps_example
函数。运行此示例时包含 ps_example
函数。要了解求解器停止的原因以及 ga
如何搜索最小值,请获得 exitflag
和 output
的结果。此外,在求解器进度过程中绘制最小值观测目标函数值。
intcon = 1; rng default % For reproducibility fun = @ps_example; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; nonlcon = []; options = optimoptions('ga','PlotFcn', @gaplotbestf); [x,fval,exitflag,output] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon,options)
ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and the constraint violation is less than options.ConstraintTolerance.
x = 1×2
-5.0000 -0.0834
fval = -1.8344
exitflag = 1
output = struct with fields:
problemtype: 'integerconstraints'
rngstate: [1×1 struct]
generations: 86
funccount: 3311
message: 'ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and ↵the constraint violation is less than options.ConstraintTolerance.'
maxconstraint: 0
hybridflag: []
使用遗传算法在 x(1)
为整数值的约束下最小化 ps_example
函数。运行此示例时包含 ps_example
函数。获得所有输出,包括最终种群和分数向量。
intcon = 1; rng default % For reproducibility fun = @ps_example; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; nonlcon = []; [x,fval,exitflag,output,population,scores] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,intcon);
ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and the constraint violation is less than options.ConstraintTolerance.
检查最终种群的前 10 个成员及其对应的分数。请注意,对于所有这些种群成员,x(1)
均为整数值。整数 ga
算法仅生成整数可行种群。
disp(population(1:10,:))
1.0e+03 * -0.0050 -0.0001 -0.0050 -0.0001 -1.6420 0.0027 -1.5070 0.0010 -0.4540 0.0104 -0.2530 -0.0011 -0.1210 -0.0003 -0.1040 0.1314 -0.0140 -0.0010 0.0160 -0.0002
disp(scores(1:10))
1.0e+06 * -0.0000 -0.0000 2.6798 2.2560 0.2016 0.0615 0.0135 0.0099 0.0001 0.0000
输入参数
目标函数,指定为函数句柄或函数名称。编写目标函数以接受长度为 nvars
的行向量,并返回一个标量值。
当 'UseVectorized'
选项为 true
时,编写 fun
以接受一个 pop
×nvars
矩阵,其中 pop
是当前种群大小。在本例中,fun
返回一个与包含适应度函数值的 pop
长度相同的向量。请确保 fun
没有为 pop
假定任何特定大小,因为 ga
即使在向量化计算中也可以传递种群的单个成员。
示例: fun = @(x)(x-[4,2]).^2
数据类型: char
| function_handle
| string
变量的数目,指定为正整数。求解器传递长度从 nvars
到 fun
的行向量。
示例: 4
数据类型: double
线性不等式约束,指定为实矩阵。A
是 M
×nvars
矩阵,其中 M
是不等式的数目。
A
以如下形式编写 M
个线性不等式
A*x <= b
,
其中,x
是由 nvars
个变量组成的列向量 x(:)
,b
是具有 M
个元素的列向量。
例如,要指定
x1 +2x2 ≤10
3x1 +4x2 ≤20
5x1 +6x2 ≤30,
提供以下约束:
A = [1,2;3,4;5,6]; b = [10;20;30];
示例: 要指定控制项变量总和等于或小于 1,请给出约束 A = ones(1,N)
和 b = 1
。
数据类型: double
线性不等式约束,指定为实数向量。b
是与 A
矩阵相关的包含 M
个元素的向量。如果将 b
作为行向量传递,求解器会在内部将 b
转换为列向量 b(:)
。
b
以如下形式编写 M
个线性不等式
A*x <= b
,
其中,x
是由 N
个变量组成的列向量 x(:)
,A
是大小为 M
×N
的矩阵。
例如,要指定
x1 +2x2 ≤10
3x1 +4x2 ≤20
5x1 +6x2 ≤30,
提供以下约束:
A = [1,2;3,4;5,6]; b = [10;20;30];
示例: 要指定控制项变量总和等于或小于 1,请给出约束 A = ones(1,N)
和 b = 1
。
数据类型: double
线性等式约束,指定为实矩阵。Aeq
是 Me
×nvars
矩阵,其中 Me
是等式的数目。
Aeq
以如下形式编写 Me
个线性等式
Aeq*x = beq
,
其中,x
是由 N
个变量组成的列向量 x(:)
,beq
是具有 Me
个元素的列向量。
例如,要指定
x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20,
提供以下约束:
Aeq = [1,2,3;2,4,1]; beq = [10;20];
示例: 要指定控制项变量总和为 1,请给出约束 Aeq = ones(1,N)
和 beq = 1
。
数据类型: double
线性等式约束,指定为实数向量。beq
是与 Aeq
矩阵相关的包含 Me
个元素的向量。如果将 beq
作为行向量传递,求解器会在内部将 beq
转换为列向量 beq(:)
。
beq
以如下形式编写 Me
个线性等式
Aeq*x = beq
,
其中,x
是由 N
个变量组成的列向量 x(:)
,Aeq
是大小为 Meq
×N
的矩阵。
例如,要指定
x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20,
提供以下约束:
Aeq = [1,2,3;2,4,1]; beq = [10;20];
示例: 要指定控制项变量总和为 1,请给出约束 Aeq = ones(1,N)
和 beq = 1
。
数据类型: double
下界,指定为实数向量或双精度数组。lb
表示 lb
≤ x
≤ ub
中元素的下界。
ga
在内部将数组 lb
转换为向量 lb(:)
。
示例: lb = [0;-Inf;4]
表示 x(1) ≥ 0
,x(3) ≥ 4
。
数据类型: double
上界,指定为实数向量或双精度数组。ub
表示 lb
≤ x
≤ ub
中元素的上界。
ga
在内部将数组 ub
转换为向量 ub(:)
。
示例: ub = [Inf;4;10]
表示 x(2) ≤ 4
,x(3) ≤ 10
。
数据类型: double
非线性约束,指定为函数句柄或函数名称。nonlcon
函数接受向量或数组 x
,并返回两个数组 c(x)
和 ceq(x)
。
c(x)
是由x
处的非线性不等式约束组成的数组。ga
尝试满足c(x) <= 0
(对于
c
的所有条目)。ceq(x)
是由x
处的非线性等式约束组成的数组。ga
尝试满足ceq(x) = 0
(对于
ceq
的所有条目)。
例如,
x = ga(@myfun,4,A,b,Aeq,beq,lb,ub,@mycon)
其中 mycon
是一个 MATLAB® 函数,例如
function [c,ceq] = mycon(x) c = ... % Compute nonlinear inequalities at x. ceq = ... % Compute nonlinear equalities at x.
要了解如何使用向量化约束,请参阅向量化约束。
注意
当 PopulationType
选项设置为 'bitString'
或 'custom'
时,ga
不会强制必须满足非线性约束。
如果 intcon
不为空,则 nonlcon
的第二个输出 (ceq
) 必须为空条目 ([]
)。
有关 ga
如何使用 nonlcon
的信息,请参阅遗传算法算法的非线性约束求解算法。
数据类型: char
| function_handle
| string
优化选项,指定为 optimoptions
的输出或结构体。
optimoptions
隐藏以斜体列出的选项。请参阅 optimoptions 隐藏的选项。
{}
中的值表示默认值。{}*
表示存在线性约束时的默认值,对于MutationFcn
,还表示存在边界时的默认值。I* 表示整数约束的默认值,或表示整数约束的特殊注意事项。
NM 指示该选项不适用于
gamultiobj
。
适用于 ga
和 gamultiobj
的选项
选项 | 描述 | 值 |
---|---|---|
ConstraintTolerance | 确定在非线性约束下的可行性。另外, 对于 options 结构体,使用 | 非负标量 | |
| 创建初始种群的函数。指定为内置创建函数的名称或函数句柄。请参阅 种群选项。 |
|
| 算法用于创建交叉子代的函数。指定为内置交叉函数的名称或函数句柄。请参阅 交叉选项。 |
|
| 交叉函数创建的下一代种群的比例,不包括精英子代。 | 非负标量 | |
| 显示级别。 |
|
| 用于计算个体距离测度的函数。指定为内置距离测度函数的名称或函数句柄。该值适用于决策变量或设计空间(基因型)或函数空间(表型)。默认 对于 options 结构体,使用函数句柄,而不是名称。 |
|
| NM 正整数,指定当前一代中保证存活到下一代的个体数量。 | 非负整数 | |
| NM 如果适应度函数达到 | 标量 | |
| 用于缩放适应度函数值的函数。指定为内置缩放函数的名称或函数句柄。 |
|
FunctionTolerance | 如果 对于 对于 options 结构体,使用 | 非负标量 | |
| I* 在 或者,是指定混合函数及其选项的元胞数组。请参阅 ga 混合函数。 对于 当问题有整数约束时,无法使用混合函数。 请参阅 何时使用混合函数。 | 函数名称或句柄 | 或者 1×2 元胞数组 | |
InitialPenalty | NM I* 罚参数的初始值 | 正标量 | |
| 用于为遗传算法提供种子的初始种群。最多包含 对于 options 结构体,使用 | 矩阵 | |
| 用于指定初始种群中个体范围的矩阵或向量。适用于 对于 options 结构体,使用 | 矩阵或向量 | |
| 用于确定适应度的初始分数。最多包含 对于 options 结构体,使用 | 单目标的列向量 | 多目标的矩阵 | |
| 算法停止前的最大迭代次数。 对于 options 结构体,使用 | 非负整数 | |
| 如果 对于 对于 options 结构体,使用 | 非负整数 | |
| NM 如果目标函数在 对于 options 结构体,使用 | 正标量 |
| 算法在运行 对于 options 结构体,使用 | 非负标量 | |
MigrationDirection | 迁移方向。请参阅 迁移选项。 |
|
MigrationFraction | 从 0 到 1 的标量,指定每个子种群中迁移到不同子种群的个体比例。请参阅 迁移选项。 | 标量 | |
MigrationInterval | 正整数,指定个体在子种群之间迁移时发生的代数。请参阅 迁移选项。 | 正整数 | |
| 产生变异子代的函数。指定为内置变异函数的名称或函数句柄。请参阅 变异选项。 |
|
| 非线性约束算法。请参阅 遗传算法算法的非线性约束求解算法。 对于 options 结构体,使用 |
|
|
对于 options 结构体,使用 | 函数句柄或函数句柄元胞数组| |
| 从 0 到 1 的标量,指定当求解器从更高的前沿选择个体时,要保留在第一个帕累托前沿的个体的比例(仅适用于 | 标量 | |
PenaltyFactor | NM I* 罚更新参数。 | 正标量 | |
| 绘制由算法计算的数据的函数。指定为内置绘图函数的名称、函数句柄,或者为由内置名称或函数句柄组成的元胞数组。请参阅 绘图选项。 对于 options 结构体,使用 |
仅限 仅限 |
PlotInterval | 正整数,指定对绘图函数的连续调用之间的代数。 | 正整数 | |
| 种群大小。 | 正整数 | 当 |
| 种群的数据类型。对于混合整数问题,必须为 |
当 |
| 选择交叉和变异子代的父代的函数。指定为内置选择函数的名称或函数句柄。
|
|
StallTest | NM 停止测试类型。 |
|
UseParallel | 并行计算适应度函数和非线性约束函数。请参阅向量化和并行选项(用户函数评估)和如何在 Global Optimization Toolbox 中使用并行处理。 |
|
| 指定函数是否向量化。请参阅向量化和并行选项(用户函数评估)和向量化适应度函数。 对于 options 结构体,使用 |
|
示例: optimoptions('ga','PlotFcn',@gaplotbestf)
整数变量,指定为正整数向量,取值范围为 1
到 nvars
。intcon
中的每个值表示一个整数值 x
分量。
注意
当 intcon
非空时,nonlcon
必须为 ceq
返回空值。有关整数规划的详细信息,请参阅混合整数 ga 优化。
示例: 要将 x
中的偶数条目指定为整数值,请将 intcon
设置为 2:2:nvars
数据类型: double
问题描述,指定为包含这些字段的结构体。
fitnessfcn | 适应度函数 |
nvars | 设计变量的数目 |
Aineq | 线性不等式约束的 |
Bineq | 线性不等式约束的 |
Aeq | 线性等式约束的 |
Beq | 线性等式约束的 |
lb |
|
ub |
|
nonlcon | 非线性约束函数 |
intcon | 整数变量的索引 |
rngstate | 用于重置随机数生成器状态的字段 |
solver |
|
options | 使用 |
您必须指定字段 fitnessfcn
、nvars
和 options
。对于 ga
,其余字段是可选项。
数据类型: struct
输出参量
解,以实数向量形式返回。x
是 ga
在其迭代过程中找到的最佳点。
解处的目标函数值,以实数形式返回。通常,fval
= fun(x)
。
ga
停止的原因,以整数形式返回。
退出标志 | 含义 |
---|---|
1 | 无非线性约束 - 适应度函数值在 |
有非线性约束 - 互补性测度(请参阅 互补性测度)的量级小于 | |
3 | 适应度函数的值在 |
4 | 步长小于机器精度,且约束违反值小于 |
5 | 达到最小适应度限值 |
0 | 超过最大代数 |
-1 | 优化被输出函数或绘图函数终止。 |
-2 | 找不到可行点。 |
-4 | 超过停滞时间限制 |
-5 | 超过时间限制 |
当存在整数约束时,ga
使用罚适应度值(而不是适应度值)作为停止条件。
有关优化过程的信息,以包含下列字段的结构体形式返回:
problemtype
- 问题类型,包括:'unconstrained'
'boundconstraints'
'linearconstraints'
'nonlinearconstr'
'integerconstraints'
rngstate
- 在算法即将开始之前 MATLAB 随机数生成器的状态。您可以使用rngstate
中的值来重新生成ga
的输出。请参阅 重现结果。generations
- 计算的代数。funccount
- 适应度函数的计算次数。message
- 算法终止的原因。maxconstraint
- 最大约束违反值(如果有)。hybridflag
- 混合函数的退出标志。与HybridFcn
options
相关。不适用于gamultiobj
。
最终种群,以 PopulationSize
×nvars
矩阵形式返回。population
的行是个体。
最终得分,以列向量形式返回。
对于非整数问题,最终得分是
population
行的适应度函数值。对于整数问题,最终得分是种群成员的罚适应度值。请参阅 整数 ga 算法。
详细信息
在增广拉格朗日函数非线性约束求解器中,互补性测度是元素为 ciλi 的向量的范数,其中 ci 是非线性不等式约束违反值,λi 是对应的拉格朗日乘数。请参阅 增广拉格朗日遗传算法。
提示
要编写一个函数,其中使用可由
ga
调用的自变量的附加参数,请参阅传递额外参数。对于使用种群类型
Double Vector
(默认值)的问题,ga
不接受其输入类型为complex
的函数。若要求解涉及复数数据的问题,请通过分离实部和虚部来编写函数,使它们接受实数向量。
替代功能
App
优化实时编辑器任务为 ga
提供了一个可视化界面。
参考
[1] Goldberg, David E., Genetic Algorithms in Search, Optimization & Machine Learning, Addison-Wesley, 1989.
[2] A. R. Conn, N. I. M. Gould, and Ph. L. Toint. “A Globally Convergent Augmented Lagrangian Algorithm for Optimization with General Constraints and Simple Bounds”, SIAM Journal on Numerical Analysis, Volume 28, Number 2, pages 545–572, 1991.
[3] A. R. Conn, N. I. M. Gould, and Ph. L. Toint. “A Globally Convergent Augmented Lagrangian Barrier Algorithm for Optimization with General Inequality Constraints and Simple Bounds”, Mathematics of Computation, Volume 66, Number 217, pages 261–288, 1997.
扩展功能
要并行运行,请将 'UseParallel'
选项设置为 true
。
options = optimoptions('
solvername
','UseParallel',true)
有关详细信息,请参阅如何在 Global Optimization Toolbox 中使用并行处理。
版本历史记录
在 R2006a 之前推出当适应度函数为确定性时,ga
不会重新计算精英(当前最佳)个体的适应度函数。您可以通过访问新的 state.EvalElites
字段并在自定义输出函数或自定义绘图函数中修改它来控制此行为。同样,当初始种群中有重复成员时,ga
对每个唯一成员只计算一次。通过访问和修改新的 state.HaveDuplicates
字段,可以在自定义输出函数或自定义绘图函数中控制此行为。有关详细信息,请参阅遗传算法的自定义输出函数或自定义绘图函数。
有关这两个新字段的详细信息,请参阅状态结构体。
MATLAB Command
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 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)