该示例示出了如何将MATLAB函数块添加到一的Simulink用于标签预测。万博1manbetxMATLAB函数块接受流数据,并预测使用已训练的,支持向量机(SVM)分类模型的标签和分类评分。万博1manbetx有关使用MATLAB功能块的详细信息,请参阅创建自定义功能的MATLAB使用功能块(万博1manbetxSIMULINK)。
该电离层
数据集,其中包括在统计和机器学习工具箱™,包含雷达收益质量(ÿ
)和预测数据(X
)。雷达回波或者是质量好('G'
)或质量差('B'
)。
加载电离层
数据集。确定样本大小。
加载电离层N = numel(Y)
N = 351
MATLAB函数块不能返回电池阵列。所以,响应变量转换成其元素是一个逻辑矢量1
如果雷达回波是好的,0
除此以外。
Y =的strcmp(Y,'G');
假设雷达回波在序列检测,你有第300个观察,但尚未收到的最后51呢。将数据划分为现在和将来样本。
prsntX = X(1:300,:);prsntY = Y(1:300);ftrX = X(301:结束,:);ftrY = Y(301:结束);
培养使用所有的SVM模型,目前可用的数据。指定预测数据标准化。
MDL = fitcsvm(prsntX,prsntY,“标准化”,真正);
MDL
是ClassificationSVM
模型。在命令行,你可以使用MDL
使新的观察预测。但是,您不能使用MDL
如在指用于代码生成的功能的输入自变量。
准备MDL
要使用函数内加载saveLearnerForCoder
。
saveLearnerForCoder(MDL,'SVMIonosphere');
saveLearnerForCoder
契约MDL
,然后将其保存在MAT文件SVMIonosphere.mat
。
定义一个名为入口点函数svmIonospherePredict.m
可以预测一个雷达回波是否是质量好。该函数应该:
包括代码生成指令%#代码生成
某处功能。
接受雷达收益预测数据。数据必须是相称X
除了行数。
加载SVMIonosphere.mat
运用loadLearnerForCoder
。
返回预测预测雷达回波良好的质量标签和分类评分(即,在正级分)。
功能[标号,得分= svmIonospherePredict(X)%#代码生成%svmIonospherePredict使用SVM模型预测雷达收益质量%svmIonospherePredict预测标签和分类测算雷达回波的%分数的预测数据X的数值矩阵使用%在文件SVMIonosphere.mat紧凑SVM模型。X的行%对应于观察和列预测变量。标签%是预测的标签和得分的置信度%分类雷达收益质量良好。%%版权所有2016年MathWorks公司MDL = loadLearnerForCoder('SVMIonosphere');[标号,bothscores] =预测(MDL,X);得分= bothscores(:,2);结束
注:如果您单击位于此页面的右上部分的按钮,打开在MATLAB®这个例子中,然后打开MATLAB的示例文件夹中。此文件夹包含入口点函数文件。
加载的Simuli万博1manbetxnk模型slexSVMIonospherePredictExample.slx
。
SimMdlName ='slexSVMIonospherePredictExample';open_system(SimMdlName);
该图显示的Simulink模型。万博1manbetx当输入节点检测到雷达回波,它指示将观测到MATLAB功能块调度到svmIonospherePredict.m
。预测的标签和得分之后,将模型返回在时间模型之一内这些值到工作区和显示的值。当加载slexSVMIonospherePredictExample.slx
,MATLAB®还加载数据集,它需要一个名为radarReturnInput
。然而,这个例子说明了如何构建所需的数据集。
该模型期望接收输入数据作为称为结构阵列radarReturnInput
包含这些字段:
时间
- 在时间点处的观察进入模型。在该示例中,该持续时间包括从0虽然50.取向必须对应于所述预测数据的观测整数。所以,在这个例子中,时间
必须是一个列向量。
信号
- A 1×1结构阵列描述输入数据,以及含有该领域值
和尺寸
。值
是预测数据的矩阵。尺寸
是预测变量的数目。
创建用于将来的雷达回波适当的结构阵列。
radarReturnInput.time =(0:50)';radarReturnInput.signals(1).values = ftrX;radarReturnInput.signals(1).dimensions =尺寸(ftrX,2);
你可以改变从名字radarReturnInput
,然后指定型号的新名称。但是,预计的Sim万博1manbetxulink结构阵列,以包含所描述的字段名称。
使用模拟训练举起手中的数据模型,即,在数据radarReturnInput
。
SIM(SimMdlName);
由图可知它后处理模型所有观测中radarReturnInput
一次一个。的预测标签X(351,:)
是1
和其正级得分1.431
。变量兜售
,YOUT
和svmlogsout
显示在工作区。YOUT
和svmlogsout
是万博1manbetxSimulinkData.Dataset
包含预测的标签和对象的得分。有关详细信息,请参阅数据格式为登录模拟数据(万博1manbetxSIMULINK)。
摘自模拟日志的模拟数据。
labelsSL = svmlogsout.getElement(1).Values.Data;scoresSL = svmlogsout.getElement(2).Values.Data;
labelsSL
是预测标签的51×1数值向量。labelsSL(J)
=1
意味着该SVM模型预测,雷达回波Ĵ
未来样品中具有良好的质量和0
否则表示。scoresSL
是阳性级分,即,从判定边界符号距离51×1数值向量。正分数对应的预测标签1
和负的分数对应于预测的标签0
。
预测使用标签和正级分数在命令行预测
。
[labelCMD,scoresCMD] =预测(MDL,ftrX);scoresCMD = scoresCMD(:,2);
labelCMD
和scoresCMD
是相称labelsSL
和scoresSL
。
通过比较返回的未来样品,阳性级分slexSVMIonospherePredictExample
这些返回调用预测
在命令行。
ERR =总和((scoresCMD - scoresSL)^ 2);ERR
ANS =逻辑1
该套分数之间的偏差平方和的总和是可以忽略不计。
如果你也有一个编码器的Simulink万博1manbetx™许可证,那么你就可以生成C代码slexSVMIonospherePredictExample.slx
使用的万博1manbetxSimulink或命令行rtwbuild
。有关详细信息,请参阅生成C代码模型(万博1manbetx编码器的Simulink)。
learnerCoderConfigurer
|loadLearnerForCoder
|预测
|rtwbuild
|saveLearnerForCoder