📄 lhtgaijin.m
字号:
clear all;
close all;
% %样本数据,变量名为A 前五列为11点,11点15,11点30,11点45, 第六列为12点数据
A=[11 0.5 12 0.45 0.84 0.12 0.97 0.96 0.27 0.63 0.88 0.51 67 0.44 0.48 0.87 0.03 387 1136 99 77 0.29 0.16 0.44 0.94
29 0.27 30 0.24 0.45 0.37 0.81 0.9 0.16 0.36 0.74 0.39 960 0.23 0.36 0.76 0.13 750 2000 80 64 0.16 0.11 0.24 0.71
56 0.17 43 0.13 0.25 0.96 0.64 0.68 0.08 0.24 0.63 0.25 1368 0.18 0.25 0.58 0.17 994 3160 38 28 0.07 0.05 0.15 0.58
64 0.11 46 0.1 0.18 0.23 0.63 0.64 0.06 0.15 0.58 0.17 1504 0.14 0.17 0.54 0.19 1032 3358 29 23 0.05 0.03 0.13 0.52
7 0.56 14 0.41 0.6 0.16 0.89 0.99 0.23 0.59 0.96 0.46 100 0.46 0.41 0.96 0.06 411 1531 87 69 0.26 0.11 0.41 0.89
18 0.35 23 0.36 0.47 0.5 0.86 0.92 0.18 0.57 0.85 0.41 910 0.32 0.38 0.78 0.12 600 1800 89 72 0.19 0.17 0.42 0.85
31 0.31 28 0.09 0.32 0.53 0.79 0.87 0.14 0.32 0.69 0.33 581 0.33 0.38 0.61 0.14 534 2311 58 43 0.11 0.13 0.22 0.76
21 0.32 31 0.16 0.32 0.59 0.83 0.8 0.09 0.37 0.71 0.29 534 0.36 0.31 0.68 0.11 577 2344 69 51 0.11 0.13 0.36 0.83
32 0.22 29 0.08 0.33 0.56 0.78 0.81 0.13 0.29 0.67 0.32 593 0.35 0.36 0.59 0.11 557 2433 51 41 0.14 0.11 0.24 0.67
10 0.55 14 0.47 0.52 0.24 0.9 0.95 0.23 0.64 0.89 0.45 800 0.38 0.42 0.83 0.15 800 2300 98 76 0.2 0.15 0.34 0.91
43 0.17 0.16 0.15 0.23 0.69 0.64 0.53 0.09 0.27 0.46 0.31 758 0.27 0.19 0.29 0.27 678 4030 48 31 0.08 0.11 0.16 0.59
77 0.04 47 0.2 0.04 1.55 0.61 0.66 0.07 0.14 0.5 0.17 1844 0.18 0.14 0.54 0.24 1544 3900 14 15 0.08 0.02 0.13 0.54
32 0.24 32 0.21 0.41 0.45 0.77 0.87 0.15 0.32 0.71 0.36 1000 0.21 0.32 0.74 0.15 840 2150 64 47 0.12 0.08 0.2 0.68
18 0.34 22 0.35 0.45 0.53 0.79 0.87 0.16 0.54 0.81 0.4 825 0.34 0.36 0.77 0.11 619 1801 81 74 0.18 0.14 0.24 0.78
15 0.4 20 0.43 0.7 0.3 0.94 0.97 0.25 0.6 0.92 0.53 630 0.44 0.49 0.85 0.09 295 1010 101 80 0.25 0.17 0.39 0.87
45 0.21 38 0.17 0.36 0.83 0.7 0.76 0.11 0.26 0.67 0.28 1270 0.17 0.26 0.62 0.14 962 3040 49 36 0.12 0.07 0.17 0.62
75 0.04 44 0.25 0.07 1.5 0.64 0.62 0.09 0.14 0.5 0.12 1800 0.18 0.14 0.55 0.26 1545 3925 14 18 0.09 0.04 0.11 0.52
45 0.18 0.45 0.17 0.24 0.71 0.68 0.59 0.11 0.29 0.48 0.36 741 0.28 0.24 0.38 0.24 659 3590 53 37 0.08 0.07 0.17 0.63
57 0.15 44 0.12 0.14 0.25 0.63 0.62 0.04 0.17 0.52 0.14 1540 0.15 0.18 0.57 0.11 1070 3445 24 28 0.04 0.08 0.14 0.42
72 0.08 49 0.6 0.07 1.51 0.62 0.6 0.02 0.1 0.51 0.13 1836 0.1 0.11 0.5 0.2 1547 3968 13 17 0.02 0.01 0.1 0.45
22 0.39 25 0.33 0.54 0.41 0.83 0.94 0.2 0.38 0.78 0.44 850 0.17 0.4 0.89 0.13 500 1600 84 70 0.17 0.14 0.28 0.81
17 0.38 21 0.36 0.8 1.1 0.85 0.81 0.12 0.31 0.83 0.39 131 0.37 0.36 0.79 0.09 497 1980 71 58 0.18 0.07 0.38 0.82
23 0.39 26 0.39 0.42 0.51 0.68 0.82 0.11 0.59 0.76 0.38 898 0.37 0.39 0.71 0.08 695 1998 78 68 0.16 0.19 0.21 0.73
42 0.15 0.17 0.14 0.28 0.64 0.68 0.57 0.04 0.25 0.48 0.37 784 0.24 0.19 0.29 0.28 641 4470 49 34 0.09 0.14 0.15 0.60
37 0.29 0.32 0.11 0.36 0.63 0.71 0.67 0.11 0.34 0.53 0.41 634 0.31 0.25 0.39 0.25 675 3455 54 38 0.09 0.08 0.18 0.66
62 0.15 45 0.14 0.16 0.24 0.68 0.64 0.07 0.14 0.58 0.15 1510 0.14 0.14 0.55 0.16 1000 3355 21 24 0.05 0.04 0.16 0.50
];
% %为方便起见,做矩阵变换,取样本数据,变量名为Ydata , 第一列为12点数据,,后四列为11点,11点15,11点30,11点45
Ydata(:,1)=A(:,25);
Ydata(:,2)=A(:,1);
Ydata(:,3)=A(:,2);
Ydata(:,4)=A(:,3);
Ydata(:,5)=A(:,4);
Ydata(:,6)=A(:,5);
Ydata(:,7)=A(:,6);
Ydata(:,8)=A(:,7);
Ydata(:,9)=A(:,8);
Ydata(:,10)=A(:,9);
Ydata(:,11)=A(:,10);
Ydata(:,12)=A(:,11);
Ydata(:,13)=A(:,12);
Ydata(:,14)=A(:,13);
Ydata(:,15)=A(:,14);
Ydata(:,16)=A(:,15);
Ydata(:,17)=A(:,16);
Ydata(:,18)=A(:,17);
Ydata(:,19)=A(:,18);
Ydata(:,20)=A(:,19);
Ydata(:,21)=A(:,20);
Ydata(:,22)=A(:,21);
Ydata(:,23)=A(:,22);
Ydata(:,24)=A(:,23);
Ydata(:,25)=A(:,24);
%0均值处理
M=mean(Ydata);
S=std(Ydata,1);
for i=1:26
for j=1:25
Ydata(i,j)=(Ydata(i,j)-M(1,j))/S(1,j);
end
end
%最大值处理
%Ydata=Ydata/67755;
mmm=cputime;
%数据训练
p=2.1;
q=2;
I=ones(22,1);
e1=0.0001;
m1=22;
for i=1:1:m1
Inputgas(i,1)=Ydata(i,2);
Inputgas(i,2)=Ydata(i,3);
Inputgas(i,3)=Ydata(i,4);
Inputgas(i,4)=Ydata(i,5);
Inputgas(i,5)=Ydata(i,6);
Inputgas(i,6)=Ydata(i,7);
Inputgas(i,7)=Ydata(i,8);
Inputgas(i,8)=Ydata(i,9);
Inputgas(i,9)=Ydata(i,10);
Inputgas(i,10)=Ydata(i,11);
Inputgas(i,11)=Ydata(i,12);
Inputgas(i,12)=Ydata(i,13);
Inputgas(i,13)=Ydata(i,14);
Inputgas(i,14)=Ydata(i,15);
Inputgas(i,15)=Ydata(i,16);
Inputgas(i,16)=Ydata(i,17);
Inputgas(i,17)=Ydata(i,18);
Inputgas(i,18)=Ydata(i,19);
Inputgas(i,19)=Ydata(i,20);
Inputgas(i,20)=Ydata(i,21);
Inputgas(i,21)=Ydata(i,22);
Inputgas(i,22)=Ydata(i,23);
Inputgas(i,23)=Ydata(i,24);
Inputgas(i,24)=Ydata(i,25);
end
size(Inputgas)
%核函数
for i=1:1:m1
for j=1:1:m1
H(i,j)=exp(-(Inputgas(i,:)-Inputgas(j,:))*(Inputgas(i,:)-Inputgas(j,:))'/(2*p^q));
end
end
C=50*ones(1,m1);%1.6
Q=[H,-H;-H,H];
Q=Q+1e-10*eye(size(Q));
f=[e1*I+Ydata(1:m1,1),e1*I-Ydata(1:m1,1)];
aeq=[I',-I'];
beq=0;
VLB=zeros(1,m1);
VUB=C;
A=-eye(2*m1,2*m1);
b=zeros(2*m1,1);
a=quadprog(Q,f,A,b,aeq,beq,VLB,VUB);
beta1=-a(1:m1,1)+a(m1+1:2*m1,1);
ccv=size(beta1);
[xxa,yya]=find(beta1>0.0001);%找到支持向量
sum1=0;
for i=1:m1
sum1=sum1+beta1(i,:)*exp(-(Inputgas(i,:)-Inputgas(xxa(1,:),:))*(Inputgas(i,:)-Inputgas(xxa(1,:),:))'/(2*p^q));
end
b=Ydata(xxa(1,:))-sum1-e1;
sum3=0;
%测试
for i=23:26
Inputgastest(i,1)=Ydata(i,2);
Inputgastest(i,2)=Ydata(i,3);
Inputgastest(i,3)=Ydata(i,4);
Inputgastest(i,4)=Ydata(i,5);
Inputgastest(i,5)=Ydata(i,6);
Inputgastest(i,6)=Ydata(i,7);
Inputgastest(i,7)=Ydata(i,8);
Inputgastest(i,8)=Ydata(i,9);
Inputgastest(i,9)=Ydata(i,10);
Inputgastest(i,10)=Ydata(i,11);
Inputgastest(i,11)=Ydata(i,12);
Inputgastest(i,12)=Ydata(i,13);
Inputgastest(i,13)=Ydata(i,14);
Inputgastest(i,14)=Ydata(i,15);
Inputgastest(i,15)=Ydata(i,16);
Inputgastest(i,16)=Ydata(i,17);
Inputgastest(i,17)=Ydata(i,18);
Inputgastest(i,18)=Ydata(i,19);
Inputgastest(i,19)=Ydata(i,20);
Inputgastest(i,20)=Ydata(i,21);
Inputgastest(i,21)=Ydata(i,22);
Inputgastest(i,22)=Ydata(i,23);
Inputgastest(i,23)=Ydata(i,24);
Inputgastest(i,24)=Ydata(i,25);
%size(Inputgastest)
sum2=0;
for j=1:22
sum2=sum2+beta1(j,:)*exp(-(Inputgastest(i,:)-Inputgas(j,:))*(Inputgastest(i,:)-Inputgas(j,:))'/(2*p^q));
end
Yout(i)=(sum2+b)*S(1,1)+M(1,1);
Ydata(i,1)=Ydata(i,1)*S(1,1)+M(1,1);
sum3=sum3+(Yout(i)-Ydata(i,1))^2;
error(i)=abs(Yout(i)-Ydata(i,1))/abs(Ydata(i,1));
end
t=23:26;
plot(t,Yout(t),'b',t,Ydata(t,1),'r');
grid on;
MES=sqrt(sum3/4)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -