基于机器学习的压电作动器模型识别
这个例子展示了使用基于机器学习的技术识别压电驱动器,包括支持向量机和高斯过程函数。
实验装置
本例中使用的数据由Micky Rakotondrabe教授(法国图卢兹大学)提供,他在法国Franche-Comté大学(Besançon)的实验室进行了实验。
实验装置由用于精确定位应用的悬臂式压电驱动器组成。该驱动器有两层,即由锆钛酸铅制成的压电层和由镍制成的被动层。压电作动器被应用于高精度定位和喷墨打印等多个领域。
压电作动器的识别
压电作动器存在滞后、蠕变和振动等问题。基于物理原理的模型必须考虑到这些特征。压电作动器模型的识别过程通常涉及估计一个数学模型,该模型将表征迟滞行为的非线性组件与表征作动器线性动力学的线性模型相结合。本例使用两种基于机器学习的方法来识别压电驱动器的黑盒模型。该例子假设没有关于执行器动力学或滞后非线性的先验知识。
输入输出数据
输入v是施加在执行器上的电压[v],输出d是执行器的位移[ m]。该数据集包含10000个输入输出样本,对应的采样率为0.0002 s。此数据将用于本示例中执行的所有估计和验证任务。
负载百分比数据负载idPiezoElectricData.mat
估计和验证数据
在这个数据集中,应用于压电驱动器的输入电压是不同频率的正弦信号的和。数据集被分成两部分,泽
而且zv
,其中前5000个样本用于估计(泽
),剩下的5000个样本用于验证(zv
)
ze = id压电数据(1:5000);%估计数据zv = idPiezoElectricData(5001:end);%验证数据
将两个数据集绘制在一起,以直观地验证它们的时间范围
图;情节(泽zv);传奇(“泽”,“zv”);
基于支持向量机输出函数的非线性ARX模型辨识
配置支持向量机(SVM)函数来表示系统模型中的非线性。
创建回归集解释变量
在模板中使用idnlarx
模型。
Vars = {' d ',“v”};滞后= {1:20,0:20};回归量=线性回归量(Vars,滞后);
配置idSupportVectorMachine
非线性对象问
.
NL = idSupportVectorMachine;问。EpsilonMargin = 1e-3;问。KernelScale = 30;
创建模板idnlarx
模型initialModel
包含解释变量
而且问
.然后使用initialModel
估计NLARX
模型mdlSVM
从数据来看泽
.
initialModel = idnlarx(ze。OutputName,泽。InputName, Regressors, NL);mdlvm = nlarx(ze, initialModel);
可视化估计模型与验证数据的比较情况。
比较(zv mdlSVM);
图中的图例显示了该模型的高拟合精度。
带高斯过程输出函数的非线性ARX模型辨识
配置高斯过程(GP)函数来表示系统模型中的非线性。
创建回归集解释变量
在模板中使用idnlarx
模型。
%创建回归量Vars = {' d ',“v”};滞后= {1:5,0:5};回归量=线性回归量(Vars,滞后);
配置idGaussianProcess
非线性对象问
.
NL = idGaussianProcess;
创建模板idnlarx
模型initialModel
包含解释变量
而且问
.然后使用initialModel
估计NLARX
模型mdlGP
从数据来看泽
.
initialModel = idnlarx(ze。OutputName,泽。InputName, Regressors, NL);mdlGP = nlarx(ze, initialModel);
可视化估计模型与验证数据的比较情况。
比较(zv mdlGP);
图中的图例显示了该模型的高拟合精度。
比较非线性模型和线性模型的结果
将使用支持向量机和高斯过程输出函数的非线性ARX得到的识别模型与使用支持向量机和高斯过程输出函数得到的识别线性模型进行比较党卫军
命令。
第一套选项党卫军
使用选项集ssestOptions
.然后估计一个线性模型mdlLinear
使用党卫军
.
opt = ssestOptions;opt.EnforceStability = true;opt.Focus =“模拟”;mdlLinear = sest(ze,6,opt);
将三个估计模型与验证数据进行比较。
图比较(zv mdlSVM、mdlGP mdlLinear);
图中图例显示,使用线性模型获得的拟合精度明显低于基于机器学习的输出函数的两种非线性ARX模型的拟合精度。