示例4-1 与铂电阻配用的智能化刻度转换模块设计(曲线拟合法)
matlab代码如下,仅供参考:
clear;clc
%11个分度值
R=[100,119.4,138.51,157.33,175.86,194.1,212.05,229.72,247.09,264.18,280.98];
T=[0,50,100,150,200,250,300,350,400,450,500];
%曲线拟合,T1为拟合曲线
A=polyfit(R,T,3);
T1=polyval(A,R);
plot(R,T,'O',R,T1)
grid on
hold on
%多项式系数显示
disp('A=');
disp(A);
%逆模型检验,T1为标准分度值,T2为逆模型计算值
R1=[100,110,120,130,140,150,160,200,210,230,250,260.72,280.23];
T2=[0,25.68,51.57,77.65,103.94,130.45,157.17,266.35,294.25,350.81,408.45,440,498];
T3=polyval(A,R1);
%B为偏差值,D为偏差绝对值最大值
B=T3-T2;
C=abs(B);D=max(C);
%显示B、D
disp('T2=');
disp(T2);
disp('T3=');
disp(T3);
disp('C=');
disp(C);
disp('D=');
disp(D);
%最小二乘拟合直线
P=polyfit(T,R,1);
R3=polyval(P,T);
plot(R3,T,'Color','green','LineWidth',0.5)
hold on
%改善前线性度
Lm=max(abs(R3-R));
RFS=max(R3)-min(R3);
L1=Lm/RFS;
%改善后线性度
yFS=500;
L2=D/yFS;
%改善效果
F=L1/L2;
disp('P=');
disp(P);
disp('Lm=');
disp(Lm);
disp('RFS=');
disp(RFS);
disp('L1=');
disp(L1);
disp('L2=');
disp(L2);
disp('F=');
disp(F);
%显示图片名称
legend({'模型数据','最小二乘法拟合曲线','最小二乘法拟合直线'})