matlab支持向量机预测电机故障,matlab基于支持向量机短期预测

我在做基于支持向量机预测风电功率过程中遇到了一些问题,这是我写的程序,预测出来的结果误差很大,我用的matlab2014a,工具箱是1.8版的已上传。麻烦各位老师帮我看一下,不胜感激。

%用传统的LS-SVM对某一天的风力发电功率的预测

%把LSSVMlabv工具包装在工作目录下面

%这个程序同时适用于P58的预测

tic;%开始记时

load PA.txt;     %

x=PA(20,:);

xtest=PA(21,:);

%归一化

MAX=max(x);

MIN=min(x);

x=(x-MIN)./(MAX-MIN);

%----------------------------------------------------------------

%构造输入输出矩阵

p=15;%从数据中可以看到风电功率基本是四个小时一个周期。

x=x';

Y_svm=x(p+1:end);

for i=1:p

X_svm(:,i)=x(i:end-p+i-1);

end

%---------------------------------------------------

%用LSSVM模型进行训练

gam = 10000;

sig2 = 2;

%---------------------------------------------------

type = 'function estimation';

kernel='RBF_kernel';

preprocess='preprocess';

[alpha,b]=trainlssvm({X_svm,Y_svm,type,gam,sig2,kernel,preprocess});

%model=trainlssvm(model);

% % 用LSSVM模型进行预测,构造预测向量

step_to_predict=96;%预测5月30日96个时刻的风电负荷

temp_matrix=x(end-p+1:end)';

%---------------------------------------------------

% 滚动预测5月31日的风电负荷

svm_multi=[];

for i=1:1:step_to_predict

Xt=temp_matrix;%先用前一天15个数据作为输入

Yt = simlssvm({X_svm,Y_svm,type,gam,sig2,kernel,preprocess},{alpha,b},Xt);

svm_multi=[svm_multi Yt];

temp_matrix=[temp_matrix(1,2:end) Yt];

end

svm_multi;%预测功率输出值

svm_multi=(svm_multi.*(MAX-MIN))+MIN;

f=1:96;svm_multi=svm_multi(1:96);

plot(f,svm_multi,'-r',f,xtest,'-b')

legend('预测值','真实值')

xlabel('九十六个时刻')

ylabel('对应的输出功率')

r1=1-sqrt(sum(((xtest-svm_multi)/850).^2)/96);  %计算预测的准确率

%计算合格率

for i=1:96

if (1-(xtest(i)-svm_multi(i))/850)>0.75

B(i)=1;

else

B(i)=0;

end

end

r2=sum(B)/96;

toc

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值