基于MATLAB神经网络工具的位移传感器补偿方案

基于MATLAB神经网络工具的位移传感器补偿方案

前言

本文所用传感器为电涡流位移传感器,测量量为位移,输出量为电压,使用神经网络算法对系统进行非线性补偿和温度补偿。

公式拟合及其原理详见之前的文章:链接: 基于MATLAB拟合的位移传感器补偿方案.

具体涉及神经网络原理及神经网络工具中各参数的设置已经有很多人讲的很清楚了,这里不再赘述。

实验方法及数据

在不同温度下,测量不同距离的位移所产生的电压,记录数据。由于现阶段缺少实验设备进行测试,故先使用参考文章中的数据,后续再更新实测数据。文章中具体数据如下:

神经网络工具的使用

使用MATLAB2018a的Neural Net Fitting工具可以轻松处理此类问题,具体步骤如下:

1.在MATLAB命令行窗口输入U、C、X的值,分别代表电压,温度,位移,依次为下方三个矩阵。(为方便使用,这里直接附上可复制的数据)

u =
    0.2880    0.5260    1.0880    1.5440    1.9130    2.4350    2.9520    3.5990    4.2830
    1.8380    2.0350    2.4760    2.8550    3.1290    3.5590    3.9190    4.3800    4.9470
    3.8380    4.0300    4.4350    4.7840    5.0860    5.4580    5.8170    6.2480    6.7950
    5.6250    5.8170    6.2020    6.5160    6.8100    7.1500    7.5190    7.9290    8.4560
    7.2450    7.4170    7.7970    8.0960    8.3740    8.6940    9.0480    9.4580    9.9540
    8.6830    8.8660    9.2250    9.5040    9.7770   10.0760   10.4250   10.8300   11.3110
    9.9640   10.1520   10.5210   10.7750   11.0180   11.3160   11.6660   12.0560   12.5370
   11.1290   11.3160   11.6610   11.9190   12.1720   12.4400   12.7800   13.1650   13.6300
   12.1720   12.3540   12.7040   12.9570   13.1900   13.4530   13.7870   14.1870   14.6230
   13.1140   13.2960   13.6250   13.8780   14.4160   14.3650   14.6990   15.0890   15.5190
   13.9600   14.1370   14.4860   14.7140   14.9520   15.2000   15.5140   15.9040   16.3390
   14.7190   14.9010   15.2410   15.4680   15.7060   15.9240   16.2530   16.6480   17.0740
   15.4030   15.5800   15.9190   16.1520   16.3850   16.5930   16.9170   17.3320   17.7320
   16.0250   16.2180   16.5320   16.7700   17.0180   17.2100   17.5290   17.9390   18.3390
   16.5870   16.7850   17.0990   17.3370   17.5850   17.7620   18.0810   18.5010   18.8860
   17.0990   17.2960   17.6150   17.8430   18.0860   18.2690   18.5770   19.0230   19.4180
   17.5700   17.7570   18.0760   18.3140   18.5420   18.7290   19.0430   19.4670   19.8530
   17.9900   18.1820   18.5010   18.7390   18.9670   19.1500   19.4480   19.8440   20.2480
   18.3750   18.5670   18.8860   19.1290   19.3470   19.5250   19.8130   20.2130   20.5980
   18.7290   18.9170   19.2310   19.4790   19.7070   19.8530   20.1420   20.5430   20.9580
   19.0530   19.2410   19.5450   19.7830   20.0150   20.1780   20.4150   20.7960   21.2560
   
c =
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   22.5000   25.8000   31.6000   36.6000   40.7000   45.4000   51.0000   56.6000   61.6000
   
 x =
         0         0         0         0         0         0         0         0         0
    0.1000    0.1000    0.1000    0.1000    0.1000    0.1000    0.1000    0.1000    0.1000
    0.2000    0.2000    0.2000    0.2000    0.2000    0.2000    0.2000    0.2000    0.2000
    0.3000    0.3000    0.3000    0.3000    0.3000    0.3000    0.3000    0.3000    0.3000
    0.4000    0.4000    0.4000    0.4000    0.4000    0.4000    0.4000    0.4000    0.4000
    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000
    0.6000    0.6000    0.6000    0.6000    0.6000    0.6000    0.6000    0.6000    0.6000
    0.7000    0.7000    0.7000    0.7000    0.7000    0.7000    0.7000    0.7000    0.7000
    0.8000    0.8000    0.8000    0.8000    0.8000    0.8000    0.8000    0.8000    0.8000
    0.9000    0.9000    0.9000    0.9000    0.9000    0.9000    0.9000    0.9000    0.9000
    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000
    1.1000    1.1000    1.1000    1.1000    1.1000    1.1000    1.1000    1.1000    1.1000
    1.2000    1.2000    1.2000    1.2000    1.2000    1.2000    1.2000    1.2000    1.2000
    1.3000    1.3000    1.3000    1.3000    1.3000    1.3000    1.3000    1.3000    1.3000
    1.4000    1.4000    1.4000    1.4000    1.4000    1.4000    1.4000    1.4000    1.4000
    1.5000    1.5000    1.5000    1.5000    1.5000    1.5000    1.5000    1.5000    1.5000
    1.6000    1.6000    1.6000    1.6000    1.6000    1.6000    1.6000    1.6000    1.6000
    1.7000    1.7000    1.7000    1.7000    1.7000    1.7000    1.7000    1.7000    1.7000
    1.8000    1.8000    1.8000    1.8000    1.8000    1.8000    1.8000    1.8000    1.8000
    1.9000    1.9000    1.9000    1.9000    1.9000    1.9000    1.9000    1.9000    1.9000
    2.0000    2.0000    2.0000    2.0000    2.0000    2.0000    2.0000    2.0000    2.0000

2.在APP中打开 Neural Net Fitting,如图所示。1
3.点击Next,设置Inputs为变量inputs0,Targets为output0,设置Samples are为Matrix rows,如下图所示。input0和output计算过程如下代码所示(这里已将数据保存成了.mat格式,所以需要读取文件)。
2

load('U.mat');%读取电压
load('C.mat');%读取温度
load('X.mat');%读取位移
for i=1:1:21*9%将输入数据转换为两列N行,输出数据为一列N行
	input0(i,1)=u(i);
    input0(i,2)=c(i);
    output0(i,1)=x(i);
end

4.继续点击Next,得到下图,可以看出输入变量为2,输出变量为1,符合输入为温度和位移,输出为电压的需求。
3
5.点击Next,再点击Train,即可开始训练。训练完成后如下图所示。
4
6.继续点击Next到最后一步,点击Save Results,即可保存训练完成的网络,也可以保存成.mat格式,下次使用就不需要再次运行神经网络工具了。

测试训练效果

将原本的U,X.C的21X9的矩阵进行调整,扩大为100X100的矩阵,但最大最小值不变,带入网络进行测试,同时对比公式拟合的效果,如下图所示,可见与原图相差无几。
5
所用代码如下:

%利用多种方法进行拟合
%%
%原始数据
clc;clear;
load('U.mat');%读取输入
load('C.mat');%读取输入
load('X.mat');%读取输出
load('net.mat');%读取神经网络
x=x+10;%因为神经网络中对负数处理有问题,所以将其变为正数
subplot(2,2,1);
s=surf(u,c,x-10);%输出原始三维曲面
%s.EdgeColor = 'none';%使曲面中黑线消失
title('原始三维曲面');
xlabel('电压u');
ylabel('温度c');
zlabel('位移x');
for i=1:1:21*9%将输入数据转换为两列N行,输出数据为一列N行
	input0(i,1)=u(i);
    input0(i,2)=c(i);
    output0(i,1)=x(i);
end
x_min=0;%显示的x轴最小值
x_max=20;
y_min=0;
y_max=60;
xlsj=100;%用于向量生成中,共多少个数据
%hold on;
%运行到这里,打开APP中的Neural Net Fitting训练数据,保持网络net,再进行下面的程序
%%
%利用神经网络拟合
u1=meshgrid(linspace(x_min,x_max,xlsj))';%将输入数据转换为N列N行,以检验神经网络
c1=meshgrid(linspace(y_min,y_max,xlsj));
uc1=[u1(:),c1(:)];%将输入数据转换为两列N行
x1=sim(net,([u1(:),c1(:)])')';
x1=reshape(x1,xlsj,xlsj);
%figure;
subplot(2,2,2);
s1=surf(u1,c1,x1-10);%输出拟合三维曲面
title('神经网络拟合三维曲面');
xlabel('电压u');
ylabel('温度c');
zlabel('位移x');
%%
%计算二元回归从而得到公式进行拟合
%cftool;%将u c x的数据填入,x对应u,y对于c,z对于x,得到公式后再屏蔽
p00 =       10.17;
p10 =     0.06429;
p01 =   -0.009332;
p20 =   -0.005164;
p11 =    0.001208;
p30 =   0.0003959;
p21 =  -7.316e-05;
u2=u1;
c2=c1;
x2=p00 + p10.*u2 + p01.*c2 + p20.*u2.^2 + p11.*u2.*c2 + p30.*u2.^3 + p21.*u2.^2.*c2;
x2=reshape(x2,xlsj,xlsj);
subplot(2,2,3);
%figure;
s2=surf(u2,c2,x2-10);%输出拟合三维曲面
title('公式拟合三维曲面');
xlabel('电压u');
ylabel('温度c');
zlabel('位移x');

数据来源文章:《基于电涡流传感器的微位移测量系统的设计_荣锋》

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值