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

📄 rbf.m

📁 matlab的rbf神经网络文件
💻 M
字号:
c=4;%源数据在源数据库中列数
k=15;%股票数据项数
date=4;%样本天数
n=3%结果向量项数
tet=2;%数据仿真项数.要求tet<k/2.
t=5000;%预留的股票波动幅度
a=0.2;%标准化数据下限
b=0.7;%标准化数据的最大值限制
dataname='cPwave';%选择数据源:cPdic为决策系数;cPrisk为风险系数;cPwave为波动数据
method='rbf';%选择神经网络训练方法:rbf为径向基网络;elman为反馈网络;grnn为广义回归网络;bp为前向网络
m1=k-(date+n)+1;

%%%%%%%%%%%%----------参数设置部分结束---------- %%%%%%%%%%%%%%

wave=data(2:k,c)-data(1:(k-1),c)%计算股票指数的前后两日的变动

%%%%%%%%%%%%----------数据计算部分结束---------- %%%%%%%%%%%%%%

for i=1:(date+n)
        Pwave(:,i)=wave(i:(m1+i-2),:) %录入波动数据
end


%%%%%%%%%%%%----------数据录入部分结束---------- %%%%%%%%%%%%%%

if (strcmp(dataname,'cPwave'))
m=m1-2;
Psourse=Pwave;
end

%%%%%%%%%%%%----------数据选择部分结束---------- %%%%%%%%%%%%%%

pmax=max(max(Psourse(:,:)))+t;
pmin=min(min(Psourse(:,:)))-t;
for i=1:(m-1)
    for j=1:(date+n)
        p2(i,j)=b*(Psourse(i,j)-pmin)/(pmax-pmin)+a; %数据标准化  
    end
end
P1=p2(1:(m-tet-1),1:date)';%截取样本向量
T1=p2(1:(m-tet-1),(date+1):(date+n))';%截取样本结果向量z
P_test=p2((m-tet):(m-1),1:date)';%数据仿真样本

%%%%%%%%%%%%----------训练数据选择部分结束---------- %%%%%%%%%%%%%%

if (strcmp(method,'rbf'))
spread=50000;%径向基函数分布密度
net=newrbe(P1,T1,spread);%径向基神经网络函数

elseif (strcmp(method,'bp'))
S2 = n; % 输出层的神经元个数
S1 = 20; %中间层有20个神经元
threshold(1:date,1)=0;
threshold(1:date,2)=1;
net=newff(threshold,[S1,S2],{'tansig','logsig'},'trainrp');%带反弹的BP训练函数
net.trainParam.epochs=5000;
net.trainParam.goal=0.0001;
LP.lr=0.05;
net=train(net,P,T);

elseif (strcmp(method,'elman'))
S2 = n; % 输出层的神经元个数
S1 = 20; %中间层有20个神经元
threshold(1:date,1)=0;
threshold(1:date,2)=1;
net=newelm(threshold,[S1,S2],{'tansig','purelin'});
%设定网络训练次数
net=init(net);
net.trainParam.epochs=10000;
net.trainParam.goal=0.0001;
net=train(net,P,T);

elseif (strcmp(method,'grnn'))
spread=0.025;%径向基函数分布密度
net=newgrnn(P,T,spread);
%网络对训练数据的逼近
end

%%%%%%%%%%%%----------训练网络选择及参数设置部分结束---------- %%%%%%%%%%%%%%

%%%%%%%%%%%%----------神经网络训练部分结束---------- %%%%%%%%%%%%%%



YP=sim(net,P1);%数据仿真
YP1=((pmax-pmin)*((YP-a)/b))+pmin; %仿真数据反标准化
TP_TEXT1=((pmax-pmin)*((T1-a)/b))+pmin;%数据仿真样本结果反标准化
X=T1-YP;%仿真误差
X1=TP_TEXT1-YP1;%仿真误差反标准化
Y=sim(net,P_test);%数据仿真
Y1=((pmax-pmin)*((Y-a)/b))+pmin; %仿真数据反标准化
T_TEXT=p2((m-tet):(m-1),(date+1):(date+n))';%数据仿真样本结果
T_TEXT1=((pmax-pmin)*((T_TEXT-a)/b))+pmin;%数据仿真样本结果反标准化
X2=T_TEXT-Y;%仿真误差
X3=T_TEXT1-Y1;%仿真误差反标准化
Ysim=sim(net,p2((m-1),1:date)')';%最终预测
Ysim1=((pmax-pmin)*((Ysim-a)/b))+pmin;%最终预测反标准化

%%%%%%%%%%%%----------神经网络仿真部分结束---------- %%%%%%%%%%%%%%

subplot(3,2,1);plot(X', 'DisplayName', 'X', 'YDataSource', 'X'); title('仿真误差');
hold;
subplot(3,2,2);plot(X1', 'DisplayName', 'X1', 'YDataSource', 'X1'); title('仿真误差反标准化');
hold;
subplot(3,2,3);plot(X2', 'DisplayName', 'X2', 'YDataSource', 'X2'); title('测试数据仿真误差');
hold;
subplot(3,2,4);plot(X3', 'DisplayName', 'X3', 'YDataSource', 'X3'); title('测试数据仿真误差反标准化');
hold;
subplot(3,2,5);plot(Ysim', 'DisplayName', 'Ysim', 'YDataSource', 'Ysim'); title('最终预测结果');
hold;
subplot(3,2,6);plot(Ysim1', 'DisplayName', 'Ysim1', 'YDataSource', 'Ysim1'); title('最终预测结果反标准化');
hold;

%%%%%%%%%%%%----------绘图部分结束---------- %%%%%%%%%%%%%%
%%%%%%%%%%%%----------    程序结束---------- %%%%%%%%%%%%%%

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -