九层妖塔 起于垒土
Matlab 最小二乘法拟合一阶线性拟合&传感器实验
- 一、代码
- 二、数据处理结果
- 三、Notes
一、代码
%电容传感器位移实验数据 最小二乘法一阶线性拟合
x = [13.080,12.580,12.080,11.580,11.080,10.580,10.080,9.580,9.080,8.580,8.080,7.580,7.080]; %13
y = [-440,-360,-283,-205,-134,-61,0,67,123,184,235,290,337];
p = polyfit(x,y,1); %最小二乘法一阶线性拟合
a = p(1) %截距
b = p(2) %斜率
%计算在 x 中的点处拟合的多项式 p。用这些数据绘制得到的线性回归模型。
f = polyval(p,x); %拟合直线
plot(x,y,'o',x,f,'-');
grid on;grid minor; %显示网格
legend('实验数据','拟合直线');
str={'-440','-360','-283','-205','-134','-61','0','67','123','184','235','290','337'};
text(x,y+15,str,'HorizontalAlignment','center');
text(9,200,['y= ',num2str(p(1)),'x+',num2str(p(2))],'FontSize',15);
xlabel('X (mm)'); ylabel('V(mV)');
title('电容传感器位移实验数据 最小二乘法一阶线性拟合');
m = max(f-y) %输出值(多次测量时为平均值)与拟合直线的最大偏差
no_line = m / 800 %非线性误差
二、数据处理结果
三、Notes
●函数polyfit
—多项式曲线拟合
●函数polyval
—多项式计算
●函数text
—向数据点添加文本说明
Matlab 隐函数方程求解&最小二乘法拟合一阶线性拟合&二阶拟合&传感器实验
- 一、代码
- 二、数据处理结果
- 三、Notes
%实验三十 Pt100 铂电阻测温特性实验
%实验数据 最小二乘法一阶线性拟合
t = linspace(40,70,7);
Vo = [-112.5,-119.4,-126.2,-133.6,-140.8,-148.2,-155.5];
figure(1) %电压与温度的分析
Vo_p = polyfit(t,Vo,1); %最小二乘法一阶线性拟合
Vo_a = Vo_p(1) %斜率
Vo_b = Vo_p(2) %截距
%计算在 x 中的点处拟合的多项式 p。用这些数据绘制得到的线性回归模型。
Vo_f = polyval(Vo_p,t); %拟合直线
plot(t,Vo,'o',t,Vo_f,'-');
grid on;grid minor; %显示网格
legend('实验数据','拟合直线');
str={'-112.5','-119.4','-126.2','-133.6','-140.8','-148.2','-155.5'};
text(t,Vo+1,str,'HorizontalAlignment','center');
text(52,-140,['Vo= ',num2str(p(1)),'t+',num2str(p(2))],'FontSize',15);
xlabel('温度t'); ylabel('电压Vo');
title('实验三十 Pt100 铂电阻测温特性实验 最小二乘法一阶线性拟合');
Vo_m = max(Vo_f-Vo) %输出值(多次测量时为平均值)与拟合直线的最大偏差
Vo_no_line = Vo_m / 50 %非线性误差
figure(2) %阻值与温度的分析
syms Rt K R2 R3 R4 Vc syms_Vo
K=10;
R2=5000;
R3=5000;
R4=100;
Vc=4;
RT = zeros(1,length(Vo));
for n = 1:length(Vo)
syms_Vo=Vo(n) * 0.001;
eqn = K*((R4/(R4+R2)) - (Rt/(R3+Rt)))*Vc == syms_Vo ;
solx = solve(eqn,Rt); %求解Rt表达式
RT(n) = vpa(solx); %转化为小数
end
RT
p = polyfit(t,RT,1); %最小二乘法一阶线性拟合
a = p(1) %截距
b = p(2) %斜率
%计算在 x 中的点处拟合的多项式 p。用这些数据绘制得到的线性回归模型。
f = polyval(p,t); %拟合直线
plot(t,RT,'o',t,f,'-');
grid on;grid minor; %显示网格
legend('实验数据','拟合直线');
str={'114.6727' '115.5754' '116.4653' '117.4341' '118.3770' '119.3465' '120.3033'};
text(t,RT+0.5,str,'HorizontalAlignment','center');
text(55,120,['Rt= ',num2str(p(1)),'t+',num2str(p(2))],'FontSize',15);
xlabel('温度t'); ylabel('阻值Rt');
title('实验三十 Pt100 铂电阻测温特性实验 最小二乘法一阶线性拟合');
m = max(f-RT) %输出值(多次测量时为平均值)与拟合直线的最大偏差
no_line = m / 50 %非线性误差、
```