主要内容

利用MATLAB函数块预测类标签

此示例显示如何将MATLAB®功能块添加到Simulink®模型中以进行标签预测。MATLAB功能块接受流数据,并使用经万博1manbetx过训练的支持向量机(SVM)分类模型预测标签和分类分数。有关使用MATLAB功能块的详细信息,请参阅万博1manbetx使用MATLAB功能块创建自定义功能(万博1manbetxSimulink).

列车分类模型

此示例使用电离层包含雷达回波质量的数据集(Y)和预测数据(X).雷达回波要么质量良好(“g”)或者质量不好(“b”).

加载电离层数据集。确定样本大小。

负载电离层n=努美尔(Y)
n=351

MATLAB功能块无法返回单元格数组。请将响应变量转换为逻辑向量,其元素为1.如果雷达返回良好,以及0否则。

Y=strcmp(Y,“g”);

假设按顺序检测到雷达回波,并且您有前300个观测值,但尚未收到最后51个观测值。将数据划分为当前和将来的样本。

prsntX=X(1:300,:);prsntY=Y(1:300);ftrX=X(301:end,:);ftrY=Y(301:end);

使用所有当前可用数据训练SVM模型。指定预测数据标准化。

Mdl=fitcsvm(prsntX、prsntY、,“标准化”,对);

Mdl是一个分类VM模型

使用保存模型saveLearnerForCoder

在命令行中,可以使用Mdl对新的观测结果进行预测。但是,您不能使用Mdl作为用于代码生成的函数中的输入参数。

准备Mdl要在函数中加载,请使用saveLearnerForCoder.

saveLearnerForCoder(Mdl,“中微子层”);

saveLearnerForCoder压实Mdl,然后将其保存在MAT文件中SVMIonosphere.mat.

定义MATLAB函数

定义一个名为Svminosphereprodict.m这可以预测雷达回波的质量是否良好。该功能必须:

  • 包括代码生成指令%#编码基因函数中的某个地方。

  • 接受雷达回波预测器数据。数据必须与X除了行数。

  • 负载SVMIonosphere.mat使用loadLearnerForCoder.

  • 返回用于预测雷达返回质量的预测标签和分类分数(即,正等级分数)。

功能[标签,分数]=Svminosphereprodict(X)%#编码基因%SVM模型预测雷达回波质量%SVM预测标签和分类估计%预测器数据X数值矩阵中的雷达回波分数%使用文件SVMIonosphere.mat.X行中的压缩SVM模型%对应于观察值,列对应于预测变量。标签%是预测的标签,分数是%将雷达回波质量分类为良好。%%版权所有2016 MathWorks公司。Mdl=loadLearnerForCoder(“中微子层”); [标签,两个核心]=预测(Mdl,X);分数=两个分数(:,2);结束

注意:如果单击此页面右上角的按钮并在MATLAB中打开此示例,则MATLAB将打开示例文件夹。此文件夹包括入口点函数文件。

创建Simul万博1manbetxink模型

使用MATLAB功万博1manbetx能块创建Simulink模型,该功能块分配给Svminosphereprodict.m.

此示例提供Simulink模型万博1manbetxSLEXSVM电离层预测样本.slx. 打开Simulin万博1manbetxk模型。

SimMdlName=“SLEXSVM电离层预测样本”;开放式系统(SimMdlName)

该图显示Simulink模型。当输入节点检测到雷万博1manbetx达回波时,它将该观测值引导到MATLAB功能块中,并发送给Svminosphereprodict.m。预测标签和分数后,模型会将这些值返回到工作区,并在模型中一次显示一个值。加载时SLEXSVM电离层预测样本.slx,MATLAB还加载它需要调用的数据集雷达回波输入. 然而,这个例子展示了如何构造所需的数据集。

模型希望以一个名为雷达回波输入包含以下字段:

  • 时间-观测值进入模型的时间点。在本例中,持续时间包括0到50之间的整数。方向必须与预测数据中的观测值相对应。那么这个例子,,时间必须是列向量。

  • 信号-描述输入数据并包含字段的1×1结构数组价值观尺寸.价值观是预测数据的矩阵。尺寸是预测变量的数量。

为未来的雷达返回创建适当的结构阵列。

radarReturnInput.time=(0:50)';雷达回波输入。信号(1)。值=ftrX;雷达回波输入。信号(1)。尺寸=尺寸(ftrX,2);

您可以从更改名称雷达回波输入,然后在模型中指定新名称。但是,Simulink希望结构数组包含所描述的字段名。万博1manbetx

使用培训之外的数据(即中的数据)模拟模型雷达回波输入.

sim(SimMdlName);

该图显示了模型在处理中的所有观察结果后的情况雷达回波输入一次一个。预测的标签X(351,:)1.它的正课堂成绩是1.431. 变量吹牛,青年,及斯文洛格苏特显示在工作区中。青年斯文洛格苏特万博1manbetxSimulinkData.Dataset包含预测标签和分数的对象。有关详细信息,请参阅记录的模拟数据的数据格式(万博1manbetxSimulink).

从仿真日志中提取仿真数据。

labelsSL=svmlogsout.getElement(1).Values.Data;scoresSL=svmlogsout.getElement(2).Values.Data;

标签是预测标签的51×1数字向量。labelsSL(j)=1.这意味着SVM模型可以预测雷达回波J未来样品质量良好,且0意思不是这样。scoresSL是一个51乘1的正类分数数值向量,即距离决策边界的有符号距离。正分数对应于预测的分数标签1.,负分数对应于预测的0.

在命令行中使用预测.

[labelCMD,scoresCMD]=预测(Mdl,ftrX);scoresCMD=scoresCMD(:,2);

labelCMD计分器相称标签scoresSL.

比较未来的样本,由SLEXSVM电离层预测样本给打电话回来的人预测在命令行。

err=sum((scoresCMD-scoresl)。^2);err
              
ans=符合逻辑的1.

分数集之间的平方偏差之和可以忽略不计。

如果您还有Simulink编码器™ 许万博1manbetx可证,然后您可以从SLEXSVM电离层预测样本.slx在Si万博1manbetxmulink中或从命令行使用slbuild(万博1manbetxSimulink)。有关详细信息,请参阅为模型生成C代码(万博1manbetxSimulink编码器).

另见

|||(万博1manbetxSimulink)|

相关话题