feixianxinghuigui.m

来自「非线性回归模型测量PH值和亚硫酸浓度的一个Matlab程序」· M 代码 · 共 107 行

M
107
字号
clc
clear
S=[
0.050	0.169	0.450	0.077	56.0	2.0	  0.00154
0.055	0.169	0.450	0.077	56.0	2.0	  0.00144
0.065	0.169	0.450	0.077	56.0	2.0	  0.00133
0.070	0.169	0.450	0.077	56.0	2.0	  0.00123
0.080	0.169	0.450	0.077	56.0	2.0	  0.00133
0.085	0.169	0.450	0.077	56.0	1.95  0.00143
0.070	0.150	0.450	0.077	56.0	2.0	  0.00297
0.070	0.155	0.450	0.077	56.0	2.0	  0.00277
0.070	0.160	0.450	0.077	56.0	2.0	  0.00266
0.070	0.165	0.450	0.077	56.0	2.0	  0.00143
0.070	0.170	0.450	0.077	56.0	2.0   0.00113
0.070	0.175	0.450	0.077	56.0	2.0   0.00113
0.070	0.180	0.450	0.077	56.0	2.0	  0.00113
0.070	0.169	0.435	0.077	56.0	1.9	  0.00267
0.070	0.169	0.440	0.077	56.0	1.9	  0.00215
0.070	0.169	0.445	0.077	56.0	1.9	  0.00144
0.070	0.169	0.450	0.077	56.0	2.0	  0.00123
0.070	0.169	0.455	0.077	56.0	2.0	  0.00133
0.070	0.169	0.460	0.077	56.0	1.9	  0.00195
0.070	0.169	0.465	0.077	56.0	1.9	  0.00205
0.070	0.169	0.470	0.077	56.0	1.9	  0.00215
0.070	0.169	0.450	0.060	56.0	2.2	  0.00164
0.070	0.169	0.450	0.065	56.0	2.0	  0.00154
0.070	0.169	0.450	0.070	56.0	2.0	  0.00154
0.070	0.169	0.450	0.075	56.0	2.0	  0.00143
0.070	0.169	0.450	0.080	56.0	1.9	  0.00102
0.070	0.169	0.450	0.085	56.0	1.85  0.00092
0.070	0.169	0.450	0.090	56.0	1.85  0.00062
0.070	0.169	0.450	0.077	50.0	1.9	  0.00133
0.070	0.169	0.450	0.077	52.0	1.9	  0.00133
0.070	0.169	0.450	0.077	54.0	2.0	  0.00123
0.070	0.169	0.450	0.077	56.0	2.0	  0.00123
0.070	0.169	0.450	0.077	60.0	2.0	  0.00113
0.070	0.169	0.450	0.077	62.0	2.0	  0.00113
]; % 全部数据样本

S1=S([2:5,8:12,15:20,23:27,30:33],:);  % 训练用数据样本
S2=S([1,6:7,13:14,21:22,28:29,34],:); % 测试用数据样本
S1X=S1(1:1:24,1:1:5); % 输入变量_训练
S2X=S2(1:1:10,1:1:5); % 输入变量_测试
S1Y1=S1(1:1:24,6); % 输出变量PH_训练
S2Y1=S2(1:1:10,6); % 输出变量PH_测试
S1Y2=S1(1:1:24,7); % 输出变量H2SO3_训练
S2Y2=S2(1:1:10,7); % 输出变量H2SO3_测试

%训练数据
x11=S1X(1:24,1); % A1
x12=S1X(1:24,2); % A2
x13=S1X(1:24,3); % A3
x14=S1X(1:24,4); % A4
x15=S1X(1:24,5); % 温度
X1=[x11,x12,x13,x14,x15]; % 输入

%测试数据
x21=S2X(1:10,1); % A1
x22=S2X(1:10,2); % A2
x23=S2X(1:10,3); % A3
x24=S2X(1:10,4); % A4
x25=S2X(1:10,5); % 温度

%PH的训练
beta0_0=[0.01 1 1 1 1 0.1];
beta0=nlinfit(X1,S1Y1,'PH',beta0_0); 
C=beta0(1);
a1=beta0(2);
a2=beta0(3);
a3=beta0(4);
a4=beta0(5);
a5=beta0(6);
for i=1:10
y(i)=C*exp(-(a1*x21(i)+a2*x22(i)+a3*x23(i)+a4*x24(i)+a5*x25(i)));
end
error=zeros(10,1);
error2=zeros(10,1);
t=1:10;
figure;
for i=1:10
error(i)=y(i)-S2Y1(i);
end
plot(t,y,'g',t,S2Y1,'k',t,error,'r-o');
title('ph值比较')
legend('测试值','样本值','误差值',1);

%H2SO3浓度的训练测试
beta1_0=[0.01 1 1 1 1 0.1];
beta1=nlinfit(X1,S1Y2,'H2SO3',beta1_0); 
D=beta1(1);
b1=beta1(2);
b2=beta1(3);
b3=beta1(4);
b4=beta1(5);
b5=beta1(6);
for i=1:10
y(i)=D*exp(-(b1*x21(i)+b2*x22(i)+b3*x23(i)+b4*x24(i)+b5*x25(i)));
end
t=1:10;
figure;
for i=1:10
    error2(i)=y(i)-S2Y2(i);
end
plot(t,y,'g',t,S2Y2,'k',t,error2,'r-o');
title('H2SO3值比较')
legend('测试值','样本值','误差值',1);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?