⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 powerrecursive2.m

📁 船舶电力负荷预测的matlab程序
💻 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 + -