我是靠谱客的博主 忧郁雪糕,最近开发中收集的这篇文章主要介绍matlab中未定义x,新人求助!!为什么这个程序会一直显示未定义函数或变量 'x'...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

%% 基于支持向量机的风电功率预测程序

%% 清空环境

clc

clear

load w.mat

x=x(1:144*7);

%%%----------下面这段程序用来构造网络的输入和输出-------------

n=144;

for i=1:length(x)-n-1

for j=i:i+n

input(i,j-i+1)=x(j,1);

end

end

output=x(n+2:length(x),1);

input=input';

output=output';

% 训练集

p_train = input(:,1:144*7-n-1)';

t_train = output(:,1:144*7-n-1)';

% 测试集

p_test = input(:,144*6-n+1:end)';

t_test = output(:,144*6-n+1:end)';

%

%% 数据归一化

% 训练集

[pn_train,inputps] = mapminmax(p_train');

pn_train = pn_train';

pn_test = mapminmax('apply',p_test',inputps);

pn_test = pn_test';

% 测试集

[tn_train,outputps] = mapminmax(t_train');

tn_train = tn_train';

tn_test = mapminmax('apply',t_test',outputps);

tn_test = tn_test';

%% SVM模型创建/训练

cmd = [' -t 2',' -c ',num2str(320),' -g ',num2str(0.05),' -s 3 -p 0.01'];

model = svmtrain(tn_train,pn_train,cmd);

%% SVM仿真预测

unknow=zeros(length(tn_test),1);

for i=1:(length(tn_test))

for j=1:i+n

if i==1

pn_test(i,j)=pn_test(i,j);

end

if i>1

if j<5

pn_test(i,j)=pn_test(i-1,j+1);

end

if j==5

[tn_sim_svm,inputps] = mapminmax(t_sim_svm);

tn_sim_svm =tn_sim_svm';

pn_test(i,j)=tn_sim_svm;

end

end

end

P_test=pn_test(i,:);

t_sim_svm=svmpredict(unknow(i),P_test,model);

Predict_2(1,i)=t_sim_svm;

end

[Predict_1,error_1] = svmpredict(tn_train,pn_train,model);

% 反归一化

predict_1 = mapminmax('reverse',Predict_1,outputps);

predict_2 = mapminmax('reverse',Predict_2,outputps)';

% 结果对比

result_1 = [t_train predict_1];

result_2 = [t_test predict_2];

error_svm=t_test-predict_2;

maxwindpower=max(x);

rmse=sqrt(sum((t_test-predict_2).^2)/length(t_test))/maxwindpower;

mae=sum(abs(error_svm))/(length(tn_test)*maxwindpower);

%% 绘图

figure(1)

plot(1:length(t_train),t_train,'r-*',1:length(t_train),predict_1,'b:o')

grid on

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

xlabel('样本编号')

ylabel('功率/kW')

string_1 = {'训练集预测结果对比';

['mse = ' num2str(error_1(2)) ' R^2 = ' num2str(error_1(3))]};

title(string_1)

figure(2)

plot(1:length(t_test),t_test,'r-*',1:length(t_test),predict_2,'b:o')

grid on

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

xlabel('样本编号')

ylabel('功率/kW')

figure(3)

plot(1:length(t_test),error_svm)

xlabel('样本编号')

ylabel('绝对误差')

figure(4)

plot(1:length(t_test),error_svm/t_test);

xlabel('样本编号')

ylabel('相对误差')

figure(5)

plot(1:length(t_test),error_svm/maxwindpower);

xlabel('样本编号')

ylabel('绝对误差与最大功率的比值')

求大神帮忙看看,哪里写错了,为什么会一直显示未定义变量x

最后

以上就是忧郁雪糕为你收集整理的matlab中未定义x,新人求助!!为什么这个程序会一直显示未定义函数或变量 'x'...的全部内容,希望文章能够帮你解决matlab中未定义x,新人求助!!为什么这个程序会一直显示未定义函数或变量 'x'...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部