将二元分类的线性模型转换为增量学习器
返回的二进制分类线性模型增量学习,IncrementalMdl
=递增学习器(Mdl
)IncrementalMdl
,使用传统训练的二元分类线性模型的超参数和系数,Mdl
.因为其属性值反映了从Mdl
,IncrementalMdl
可以根据新的观测结果预测标签,是吗温暖的,这意味着跟踪其预测性能。
使用由一个或多个名称-值对参数指定的附加选项。有些选择需要训练IncrementalMdl
=递增学习器(Mdl
,名称,值
)IncrementalMdl
在它的预测性能被跟踪之前。例如,“MetricsWarmupPeriod”,50岁,“MetricsWindowSize”,100
在跟踪性能指标之前,指定50个观察值的初步增量培训周期,并指定在更新性能指标之前处理100个观察值。
利用遗传算法训练二元学习的线性分类模型fitclinear
,然后将其转化为增量式学习者。
加载和预处理数据
加载人类活动数据集。
负载人类活动
有关数据集的详细信息,请输入描述
在命令行。
响应可以是以下五个类之一:坐着
,站
,走
,运行
或跳舞
.通过识别被试是否在移动(actid
> 2).
Y=活动>2;
训练线性分类模型
对整个数据集拟合一个线性分类模型。
TTMdl=fitclinear(专长,Y)
TTMdl = classficationlinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'none' Beta: [60x1 double] Bias: -0.2005 Lambda: 4.1537e-05 Learner: 'svm'属性,方法
TTMdl
是一个ClassificationLinear
模型对象表示传统训练的线性分类模型。
转换训练模型
将传统的训练线性分类模型转换为二元线性分类模型进行增量学习。
IncrementalMdl=incrementalLearner(TTMdl)
IncrementalMdl = incrementalClassificationLinear IsWarm: 1 Metrics: [1x2 table] ClassNames: [0 1] ScoreTransform: 'none' Beta: [60x1 double] Bias: -0.2005 Learner: 'svm'属性,方法
IncrementalMdl
是一个incrementalClassificationLinear
模型对象准备的增量学习使用支持向量机。
的递增学习器
初始化增量学习者通过传递学习系数,以及其他信息TTMdl
从训练数据中提取。
IncrementalMdl
天气暖和(IsWarm
是1
),这意味着增量学习功能可以开始跟踪性能指标。
的递增学习器
函数使用自适应比例不变求解器训练模型,然而fitclinear
训练有素的TTMdl
使用BFGS解算器。
预测反应
通过转换传统训练模型创建的增量学习者可以生成预测,而无需进一步处理。
使用这两种模型预测所有观测值的分类分数。
[~,ttscores]=预测(TTMdl,feat);[~,ilscores]=预测(IncrementalMdl,feat);比较存储=常模(ttscores(:,1)-ilscores(:,1))
compareScores = 0
模型生成的分数之间的差值为0。
如果使用SGD或ASGD解算器训练线性分类模型,递增学习器
在转换线性分类模型时,保留求解器、线性模型类型和相关的超参数值。
加载人类活动数据集。
负载人类活动
有关数据集的详细信息,请输入描述
在命令行。
回答可以是五种类型之一:坐姿、站立、行走、跑步或跳舞。通过识别被试是否在移动(actid
> 2).
Y=活动>2;
将数据随机分成两半:前半部分用于训练模型,后半部分用于增量学习。
n =元素个数(Y);rng (1)%的再现性本量利= cvpartition (n,“坚持”, 0.5);idxtt =培训(cvp);idxil =测试(cvp);%数据的前半部分Xtt=feat(idxtt,:);Ytt=Y(idxtt);%数据的后半部分自=壮举(idxil:);Yil = Y (idxil);
创建一组11个对数间隔的正则化强度 通过 .
λ=对数空间(-6,-0.5,11);
因为变量在不同的尺度上,所以使用隐式展开来标准化预测数据。
Xtt = (Xtt -均值(Xtt))./std(Xtt);
通过应用5倍交叉验证来调整L2正则化参数。指定标准SGD求解器。
Ytt TTCVMdl = fitclinear (Xtt,“KFold”5,“学习者”,“物流”,...“解算器”,“sgd”,“λ”,Lambda);
TTCVMdl
是一个ClassificationPartitionedLinear
表示交叉验证期间创建的五个模型的模型(请参见经过训练的
)交叉验证程序包括使用每个规定的正规化值进行培训。
计算每个模型和正则化的交叉验证分类误差。
cvloss = kfoldLoss (TTCVMdl)
cvloss =1×110.0054 0.0039 0.0034 0.0033 0.0030 0.0027 0.0027 0.0031 0.0036 0.0056 0.0077
cvloss
中每个正则化值的测试样本分类损失兰
.
选择最小化分类误差的正则化值。使用选定的正则化值再次训练模型。
[~,idxmin]=min(cvloss);TTMdl=fitclinear(Xtt,Ytt,“学习者”,“物流”,“解算器”,“sgd”,...“λ”,Lambda(idxmin));
TTMdl
是一个ClassificationLinear
模型。
将传统的训练线性分类模型转换为二元线性分类模型进行增量学习。指定标准SGD求解器。准备增量学习函数来标准化预测器。这个动作需要一个初始阶段来估计预测器的平均值和标准偏差。指定估算周期2000
观察值(默认为1000
当需要预测时刻时)。
IncrementalMdl=incrementalLearner(TTMdl,“标准化”符合事实的“EstimationPeriod”,2000);
IncrementalMdl
是一个incrementalClassificationLinear
模型对象。递增学习器
通过求解器和正规化强度,以及从训练中学到的其他信息TTMdl
到IncrementalMdl
.
通过使用适合
函数。在每一次迭代:
通过一次处理10个观察来模拟数据流。
用一个适合传入观测的新模型覆盖先前的增量模型。
商店 看看它在训练过程中是如何发展的。
%预先配置nil =元素个数(Yil);numObsPerChunk = 10;nchunk =地板(nil / numObsPerChunk);learnrate = [IncrementalMdl.LearnRate;0 (nchunk 1)];beta1 = [IncrementalMdl.Beta (1);0 (nchunk 1)];%增量式拟合为j = 1:nchunk ibegin = min(nil,numObsPerChunk*(j-1) + 1);iend = min (nil, numObsPerChunk * j);idx = ibegin: iend;IncrementalMdl =适合(IncrementalMdl自(idx:), Yil (idx));(1) = IncrementalMdl.Beta(1);结束
IncrementalMdl
是一个incrementalClassificationLinear
模型对象对流中的所有数据进行训练。
情节 看看它是如何进化的。
情节(beta1) ylabel (“\beta_1”)xline(递增almdl.EstimationPeriod/numObsPerChunk,‘r-。’);包含(“迭代”)
因为适合
在估计期间,模型不适合流数据,
在前200次迭代(2000次观察)中是不变的。然后,
增量拟合过程中突然发生变化。
使用训练过的线性分类模型来初始化增量学习者。通过指定一个指标预热期来为增量学习者做准备,在此期间updateMetricsAndFit
函数只适合模型。指定一个指标窗口大小为500个观察值。
加载人类活动数据集。
负载人类活动
有关数据集的详细信息,请输入描述
在命令行。
回答可以是五种课程之一:坐、站、走、跑和跳舞。通过确定受试者是否在移动来区分反应(actid
> 2).
Y=活动>2;
因为数据集是按活动分组的,所以为了简单起见,将其洗牌。然后,将数据随机分成两半:前半部分用于传统的模型训练,后半部分用于增量学习。
n =元素个数(Y);rng (1)%的再现性本量利= cvpartition (n,“坚持”, 0.5);idxtt =培训(cvp);idxil =测试(cvp);shuffidx = randperm (n);X =壮举(shuffidx:);Y = Y (shuffidx);%数据的前半部分Xtt = X (idxtt:);Ytt = Y (idxtt);%数据的后半部分自= X (idxil:);Yil = Y (idxil);
对前半部分数据拟合一个线性分类模型。
TTMdl=fitclinear(Xtt,Ytt);
将传统训练的线性分类模型转换为用于增量学习的二元分类线性模型。指定以下内容:
2000次观察的性能指标预热期
500个观察值的指标窗口大小
使用分类误差和铰链损失来衡量模型的性能
IncrementalMdl=incrementalLearner(TTMdl,“MetricsWarmupPeriod”, 2000,“MetricsWindowSize”,500,...“指标”,[“classiferror”“铰链”]);
通过使用updateMetricsAndFit
函数。在每一次迭代:
模拟处理20个观察数据块的数据流。
用一个适合传入观测的新模型覆盖先前的增量模型。
商店 、累积指标和窗口指标,以查看它们在增量学习过程中如何发展。
%预先配置nil=numel(Yil);numObsPerChunk=20;nchunk=ceil(nil/numObsPerChunk);ce=array2table(零(nchunk,2),“VariableNames”,[“累计”“窗口”]); 铰链=阵列2表(零(nchunk,2),“VariableNames”,[“累计”“窗口”]);beta1 = 0 (nchunk, 1);%增量式拟合为j=1:nchunk-ibegin=min(nil,numObsPerChunk*(j-1)+1;iend=min(nil,numObsPerChunk*j);idx=ibegin:iend;IncrementalMdl=updateMetricsAndFit(IncrementalMdl,Xil(idx,:),Yil(idx));ce{j,:}=IncrementalMdl.Metrics{“ClassificationError”,:};铰链{j,:}=IncrementalMdl.Metrics{“HingeLoss”,:};(1) = IncrementalMdl.Beta(1);结束
IncrementalMdl
是一个incrementalClassificationLinear
模型在流中的所有数据上进行训练。在增量学习过程中以及模型热身后,updateMetricsAndFit
检查模型在传入观测中的表现,然后将模型与观测相吻合。
查看性能指标和 在训练过程中进化,将它们绘制在单独的子地块上。
图;次要情节(1,1)情节(beta1) ylabel (“\beta_1”) xlim ([0 nchunk]);参照线(IncrementalMdl。计量预热/numObsPerChunk,‘r-。’);subplot(3,1,2) h = plot(ce.Variables);xlim ([0 nchunk]);ylabel (分类错误的)参照线(IncrementalMdl。计量预热/numObsPerChunk,‘r-。’);图例(h、ce.Properties.VariableNames、,“位置”,“西北”)子批次(3,1,3)h=绘图(铰链变量);xlim([0 nchunk]);ylabel(“铰链损耗”)参照线(IncrementalMdl。计量预热/numObsPerChunk,‘r-。’); 图例(h,铰链.Properties.VariableNames,“位置”,“西北”)xlabel(“迭代”)
情节表明updateMetricsAndFit
以下:
适合 在所有的增量学习迭代过程中。
仅在指标预热期后计算性能指标。
在每次迭代期间计算累积度量。
在处理500个观察(25次迭代)后计算窗口度量。
Mdl
- - - - - -传统的二元分类线性模型ClassificationLinear
模型对象传统的二值分类训练线性模型,指定为ClassificationLinear
返回的模型对象fitclinear
.
请注意
如果兰姆达
是一个数值向量,您必须通过使用selectModels
.
增量学习函数仅支持数字输入预测数据。如果金宝appMdl
是否适合分类数据,使用dummyvar
将每个分类变量转换为虚拟变量的数字矩阵,并将所有虚拟变量矩阵和任何其他数字预测器连接起来。有关详细信息,请参见虚拟变量.
指定可选的逗号分隔的对名称,值
论据。名称
参数名和价值
是对应的值。名称
必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:名称1,值1,…,名称,值
.
“规划求解”、“扇区”,“MetricsWindowSize”,100
指定用于目标优化的自适应比例不变求解器,并指定在更新性能指标之前处理100个观察值。
解算器
- - - - - -目标函数最小化技术“比例不变量”
(默认)|“sgd”
|“asgd”
目标函数最小化技术,指定为逗号分隔对组成“解算器”
和这个表中的值。
价值 | 描述 | 笔记 |
---|---|---|
“比例不变量” |
|
|
“sgd” |
随机梯度下降(SGD)[3][2] |
|
“asgd” |
平均随机梯度下降(ASGD)[4] |
|
例子:“规划求解”、“sgd”
数据类型:字符
|字符串
标准化
- - - - - -用于标准化预测数据的标志假
(默认)|符合事实的
标志来标准化预测器数据,指定为逗号分隔对,由“标准化”
和这个表中的值。
价值 | 描述 |
---|---|
符合事实的 |
该软件将预测数据标准化。有关详细信息,请参见标准化数据. |
假 |
该软件没有标准化预测数据。 |
例子:“标准化”,真的
数据类型:逻辑
BatchSize
- - - - - -Mini-batch大小最小批量大小,指定为逗号分隔对,由“BatchSize”
和一个正整数。在培训期间的每次迭代中,递增学习器
使用min (BatchSize numObs)
计算次梯度的观测值,其中numObs
是否将训练数据中的观测值传递给适合
或updateMetricsAndFit
.
如果Mdl.ModelParameters.Solver
是“sgd”
或“asgd”
,则不能设置“BatchSize”
. 相反递增学习器
集“BatchSize”
到Mdl.ModelParameters.BatchSize
.
否则BatchSize
是10
.
例子:“BatchSize”,1
数据类型:仅有一个的
|双
λ
- - - - - -脊(l2)正则化项强度脊(l2)正则化项强度,指定为逗号分隔对组成“λ”
一个非负标量。
什么时候正则化
是“岭(L2)”
:
如果Mdl.ModelParameters.Solver
是“sgd”
或“asgd”
,则不能设置“λ”
. 相反递增学习器
集“λ”
到兰姆达
.
否则λ
是1e-5
.
请注意
递增学习器
不支持套索正则化。金宝app如果正则化
是'套索(L1)'
,递增学习器
改为使用脊线正则化,并设置“解算器”
要使用的名称-值对参数“比例不变量”
默认情况下。
例子:“λ”,0.01
数据类型:仅有一个的
|双
LearnRate
- - - - - -学习速率“汽车”
|积极的标量学习率,指定为逗号分隔对组成“LearnRate”
和“汽车”
或者一个正标量。LearnRate
通过缩放目标次梯度来控制优化步长。
如果Mdl.ModelParameters.Solver
是“sgd”
或“asgd”
,则不能设置“LearnRate”
. 相反递增学习器
集“LearnRate”
到Mdl.ModelParameters.LearnRate
.
否则LearnRate
是“汽车”
.
为“汽车”
:
名称-值对参数“LearnRateSchedule”
确定后续学习周期的学习速率。
例子:“LearnRate”,0.001
数据类型:仅有一个的
|双
|字符
|字符串
学习进度表
- - - - - -学习率表“腐朽的”
(默认)|“不变”
洗牌
- - - - - -用于在批处理中洗牌观察值的标志符合事实的
(默认)|假
标记在每次迭代时对批处理中的观察进行变换,指定为逗号分隔的对,由“洗牌”
和这个表中的值。
价值 | 描述 |
---|---|
符合事实的 |
在处理数据集之前,该软件会将每一批传入数据中的观察结果打乱。这个动作减少了抽样方案引起的偏差。 |
假 |
软件按照接收到的顺序处理数据。 |
例子:“洗牌”,假的
数据类型:逻辑
指标
- - - - - -为增量学习期间跟踪的性能指标建模“classiferror”
(默认)|字符串向量|函数处理|细胞向量|结构阵列|“binodeviance”
|“指数”
|“铰链”
|“分对数”
|“二次”
| ...为增量学习期间跟踪的性能度量建模updateMetrics
或updateMetricsAndFit
函数,指定为内置的损失函数名称,名称的字符串向量,函数句柄(@metricName
),函数句柄的结构数组,或名称、函数句柄或结构数组的单元向量。
下表列出了内置的loss函数名称。可以使用字符串向量指定多个。
名称 | 描述 |
---|---|
“binodeviance” |
二项异常 |
“classiferror” |
分类错误 |
“指数” |
指数 |
“铰链” |
铰链 |
“分对数” |
物流 |
“二次” |
二次的 |
关于内置丢失函数的详细信息,请参见丧失
.
例子:“指标”[“标准”或“铰链”]
若要指定返回性能指标的自定义函数,请使用函数句柄表示法。函数必须是这样的形式:
公制=自定义公制(C,S)
输出参数度规
是一个n-by-1数值向量,其中每个元素是通过在学习周期内处理增量学习函数而在数据中丢失的相应观察值。
指定函数名(customMetric
).
C
是一个n-乘2的逻辑矩阵,其中的行表示相应的观测所属的类。中的列顺序对应于类的顺序Mdl。ClassNames
. 创造C
通过设置C (
=p
,问
)1
,如果观察
她在上课p
,用于指定数据中的每个观察值。在第行中设置其他元素问
到p
0
.
年代
是一个n预测分类分数的-by-2数字矩阵。年代
类似于分数
的输出预测
,其中行对应于数据中的观察值,列顺序对应于中的类顺序Mdl。ClassNames
.S (
是观察的分类评分吗p
,问
)
分类p
.问
若要指定多个自定义指标并为每个指标分配自定义名称,请使用结构数组。要指定内置指标和自定义指标的组合,请使用单元格向量。
例子:“指标”,结构(‘Metric2’,‘Metric1’,@customMetric1 @customMetric2)
例子:'度量',{@customMetric1@CustomMetric2'logit'结构('Metric3',@customMetric3)}
updateMetrics
和updateMetricsAndFit
在属性的表中存储指定的指标IncrementalMdl。指标
.的数据类型指标
确定表的行名。
“指标” 值数据类型 |
的描述指标 属性行名称 |
实例 |
---|---|---|
字符串或字符向量 | 相应的内置度量的名称 | 的行名称“classiferror” 是“ClassificationError” |
结构数组 | 字段名 | 的行名称结构(Metric1, @customMetric1) 是“Metric1” |
存储在程序文件中的函数句柄 | 函数的名字 | 的行名称@customMetric 是“自定义度量” |
匿名函数 | 自定义度量_ ,在那里 是度量 在里面指标 |
的行名称@(C,S)自定义公制(C,S)。。。 是CustomMetric_1 |
有关性能指标选项的详细信息,请参见性能指标.
数据类型:字符
|字符串
|结构体
|细胞
|function_handle
度量窗口大小
- - - - - -用于计算窗口性能指标的观察数200
(默认)|正整数| ...IncrementalMdl
-用于增量学习的二元分类线性模型incrementalClassificationLinear
模型对象增量学习的二元分类线性模型,返回为incrementalClassificationLinear
模型对象。IncrementalMdl
也配置为生成给定新数据的预测(见预测
).
初始化IncrementalMdl
对于增量学习,递增学习器
的值Mdl
这个表中的性质等于IncrementalMdl
.
财产 | 描述 |
---|---|
β |
线性模型系数,数值矢量 |
偏见 |
模型截距,一个数值标量 |
一会 |
用于二进制分类的类标签,一个双元素列表 |
ModelParameters。FitBias |
线性模型截距包含标志 |
学习者 |
线性分类模型类型 |
先前的 |
先验类标号分布,一个数值向量 |
增量学习或在线学习,是机器学习的一个分支,涉及处理来自数据流的传入数据,可能对预测变量的分布、预测或目标函数的方面(包括调优参数值)或观察值是否被标记的知识很少或没有。增量学习与传统机器学习不同,传统机器学习有足够的标记数据来适应模型,执行交叉验证来调整超参数,并推断预测器分布。
给定传入的观察,增量学习模型以下列任何一种方式处理数据,但通常按以下顺序:
预测标签。
测量预测性能。
检查模型中的结构断裂或漂移。
使模型与传入的观测值相符。
的增量学习的自适应比例不变求解器,介绍了[1],是一种基于梯度下降的目标求解器,用于训练线性预测模型。该求解器是超参数自由的,对预测变量尺度的差异不敏感,并且不需要预先知道预测变量的分布。这些特点使它非常适合增量学习。
标准SGD和ASGD解算器对预测变量之间的不同比例非常敏感,导致模型性能较差。要使用SGD和ASGD实现更高的精度,可以标准化预测数据,调整正则化和学习速率参数可能需要调整。对于传统的机器学习,足够数据可用于通过交叉验证和预测标准化进行超参数调整。但是,对于增量学习,可能没有足够的数据可用(例如,观测值一次可能只有一个)这些特性使得在增量学习过程中,参数整定和预测器标准化变得困难或不可能。
分类的增量拟合函数适合
和updateMetricsAndFit
使用更激进的ScInOL2版本的算法。
在估计期间,采用增量拟合函数适合
和updateMetricsAndFit
使用第一个传入估计期
用于估计(调整)增量训练所需的超参数的观察值。此表描述了超参数及其估计或调整时间。
Hyperparameter | 模型属性 | 使用 | Hyperparameters估计 |
---|---|---|---|
预测均值和标准差 |
|
标准化预测数据 | 当你设定 |
学习速率 | LearnRate |
调整求解器步长 | 当上述两个条件同时适用时:
|
这些函数只适合增量模型的最后一个估计时期的观测,并且它们不使用任何观测来跟踪模型的性能。在估计周期结束时,函数更新存储超参数的属性。
如果增量学习函数配置为标准化预测变量,则它们使用存储在μ
和σ
增量学习模型的性质IncrementalMdl
.
当你设定“标准化”,真的
和增量almdl.Mu
和IncrementalMdl。σ
为空,则适用以下条件:
如果估计周期是正的(请参阅估计期
的属性IncrementalMdl
),增量拟合函数利用估计期间的观测值估计均值和标准差。
如果估计周期为0,递增学习器
强迫估算周期1000
.因此,增量拟合函数在强迫估计期间估计新的预测变量均值和标准差。
当增量拟合函数估计预测平均值和标准偏差时,该函数使用估计期观测值计算加权平均值和加权标准偏差。具体而言,该函数将预测值标准化j(xj)使用
在哪里
xj这是一个预测器j和xjk是观察k的预测j在估算期内。
在哪里
pk类的先验概率是多少k(先前的
增量模型的性质)。
wj是观察体重j.
的updateMetrics
和updateMetricsAndFit
函数是跟踪模型性能指标的增量学习函数(“指标”
)从新数据中获取温暖的(IsWarm
属性)。然后是一个增量模型适合
或updateMetricsAndFit
使增量模型适合于“MetricsWarmupPeriod”
观察,这是度量预热期.
如果“EstimationPeriod”
> 0,函数在将模型与数据拟合之前估计超参数。因此,函数必须处理额外的估计期
模型开始度量预热期之前的观察。
的指标
增量模型的属性将每个性能指标的两种形式存储为表的变量(列),累计的
和窗口
,行中包含单个度量。当增量模型处于温暖状态时,updateMetrics
和updateMetricsAndFit
以下列频率更新度量标准:
累计的
-这些函数计算自模型性能跟踪开始以来的累积度量。每次调用函数时,函数都会更新指标,并基于所提供的整个数据集进行计算。
窗口
-函数根据窗口内的所有观察值计算度量值“MetricsWindowSize”
名称-值对的论点。“MetricsWindowSize”
也决定了软件更新的频率窗口
指标。例如,如果度量窗口大小
为20时,函数根据所提供数据中的最近20个观察值计算度量值(X((结束–20+1):结束:)
和Y((end - 20 + 1):结束)
).
跟踪窗口内性能指标的增量函数使用以下过程:
对于每个指定的度量,存储一个长度的缓冲区度量窗口大小
以及观察权值的缓冲。
使用基于批量传入观察数据的模型性能填充指标缓冲区的元素,并将相应的观察数据权重存储在权重缓冲区中。
当缓冲区被填满时,覆盖IncrementalMdl.Metrics.Window
在指标窗口中使用加权平均性能。如果在函数处理一批观察值时缓冲区被填满,则最新传入的度量窗口大小
观察值进入缓冲区,最早的观察值将从缓冲区中删除度量窗口大小
为20时,指标缓冲区有10个来自先前处理的批处理的值,15个值是传入的。为了组成长度为20的窗口,函数使用了来自15个传入观测的测量值和来自前一批的最新5个测量值。
[1]肯普卡,Michał,沃伊切赫,Kotłowski,曼弗雷德·k·瓦姆斯。学习线性模型的自适应尺度不变在线算法相关系数(2019年2月)。https://arxiv.org/abs/1902.07528.
李磊,张涛。“基于截断梯度的稀疏在线学习”。j·马赫。学习。Res。, 2009年第10卷,第777-801页。
谢勒夫-施瓦茨,S. Y.辛格和N.斯雷布罗。Pegasos:支持向量机的原始估计次梯度求解器第24届国际机器学习会议记录,ICML'07, 2007,第807-814页。
[4]徐,魏。“基于平均随机梯度下降的最优一次大规模学习”。相关系数,abs/1107.24902011。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。