📄 powerrecursive2.m
字号:
function [nsv,beta,error1,error2,trnY,X]=powerRecursive2(y)
global p1 p2 C e;
%SVM的构建
v=zeros(4,100);m(1)=y(1);
for i=3:100;
v(1,i-1)=y(i)';
v(2,i-1)=y(i-1)';
v(3,i-1)=y(i-2)';
s(i)=y(i);
s(1)=y(1);s(2)=y(2);
end
for n=2:100;
m(n)=m(n-1)+y(n);
v(4,n-1)=m(n)/n;
end
v(1,100)=0;v(2,100)=y(100);v(3,100)=y(99);
ker='rbf';X=v';Y=s';
clear n;clear t;
[nsv,beta,bias]=svr(X,Y,ker,C,'einsensitive',e);
% SVM的测试
h1=figure('color',[.80 .80 .80],'pos',[50 50 300 250]);
c1=axes('position',[.16,.15,.8,.8],'FontSize',9);
w=zeros(4,100);m(1)=y(101);
w(2,1)=0; w(1,1)=0;w(3,1)=0;w(1,100)=0;w(2,100)=y(200);w(3,100)=y(199);
for i=3:100;
w(1,i-1)=y(i+100)';
w(2,i-1)=y(i+99)';
w(3,i-1)=y(i+98)';
end
for n=2:100;
m(n)=m(n-1)+y(n+100);
w(4,n-1)=m(n)/n;
end
trnX=v';tstX=w';
tstY=svroutput(trnX,tstX,ker,beta,bias);
for n=1:100
t=1:100;
plot(t,y(t+100),'b',t,tstY,'k+')
axis([0 100 500 1300])
ylabel('power load /kw','FontSize',9)
xlabel('t / hour','Fontsize',9)
end
%输出误差函数图形
t=3:98;
error1(t)=(y(t+100)-tstY(t))./y(t+100)*100;
tf=find(abs(error1)>10);
num=length(tf);
fprintf('the fault data number: %d (%3.1f%%)\n',num,100*num/max(t));
%非线性系统辨识(训练数据的再输入)
h2=figure('color',[.80 .80 .80],'pos',[50 50 300 250]);
c1=axes('position',[.16,.15,.8,.8],'FontSize',9);
trnY=svroutput(X,X,ker,beta,bias);
for n=1:100
t=1:100;
plot(t,y(t),'b',t,trnY(t),'k+')
axis([0 100 500 1300])
ylabel('power load /kw','Fontsize',9)
xlabel('t / hour','Fontsize',9)
end
%输出误差函数图形(真实训练数据和SVM辨识数据之间的误差)
w=3:95 ;
if y(w)==trnY(w)
error2(w)=1e-10;
else
error2(w)=(y(w)-trnY(w))./y(w)*100;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -