matlab 广义神经网络,广义回归神经网络MATLAB源程序.doc

GRNN神经网络---广义回归神经网络,主要用于函数逼近。

?

x=-2:0.01:1y=2*x.^6+3*x.^5-3*x.^3+x.^2+1P=x(1:15:end)T=y(1:15:end)spread=[0.05 0.2 0.4 0.6 0.8];l_style={'r.-','bo--','ko-.','k*--','r^-'};for i=1:length(spread)??? net=newgrnn(P,T,spread(i));??? a=sim(net,P);??? plot(P,a,l_style{i})??? hold on endplot(P,T,'o');legend('spread=0.05','spread=0.2','spread=0.4','spread=0.6','spread=0.8','train data');title('GRNN神经网络spread探讨')

load data;

% 载入数据并将数据分成训练和预测两类

p_train=p(1:10,:);

p_test=p(11:13,:);

t_train=t(1:10,:);

t_test=t(11:13,:);

% 将各个矩阵转置以便适应网络结构

p_train=p_train';

t_train=t_train';

p_test=p_test';

t_test=t_test';

% 将数据归一化

[pn,minp,maxp,tn,mint,maxt]=premnmx(p_train,t_train);

p2n=tramnmx(p_test,minp,maxp);

for sc=0.1:0.01:1;

tic,

net=newgrnn(pn,tn,sc);

sc

toc

Out=sim(net,p2n);

a2=postmnmx(Out,mint,maxt);

e=t_test-a2';

perf=mse(e);

Y=sim(net,pn);

a3=postmnmx(Y,mint,maxt);

ep=a3-t_train;

perfp=mse(ep);

hold on;

figure(1);

title('网络的预测误差')

plot(sc,perf,'g:*');

hold on;

figure(2);

title('网络的逼近误差')

plot(sc,perfp,'r:*');

end

%通用感应器神经网络。P=[-0.5 -0.5 0.3 -0.1 -40;-0.5 0.5 -0.5 1 50];%输入向量T=[1 1 0 0 1];%期望输出plotpv(P,T);%描绘输入点图像net=newp([-40 1;-1 50],1);%生成网络,其中参数分别为输入向量的范围和神经元感应器数量hold onlinehandle=plotpc(net.iw{1},net.b{1});net.adaptparam.passes=3;for a=1:25%训练次数[net,Y,E]=adapt(net,P,T);linehandle=plotpc(net.iw{1},net.b{1},linehandle);drawnow;end%通用newlin程序%通用线性网络进行预测time=0:0.025:5;T=sin(time*4*pi);Q=length(T);P=zeros(5,Q);%P中存储信号T的前5(可变,根据需要而定)次值,作为网络输入。P(1,2:Q)=T(1,1:(Q-1));P(2,3:Q)=T(1,1:(Q-2));P(3,4:Q)=T(1,1:(Q-3));P(4,5:Q)=T(1,1:(Q-4));P(5,6:Q)=T(1,1:(Q-5));plot(time,T)%绘制信号T曲线xlabel('时间');ylabel('目标信号');title('待预测信号');net=newlind(P,T);%根据输入和期望输出直接生成线性网络a=sim(net,P);%网络测试figure(2)plot(time,a,time,T,'+')xlabel('时间');ylabel('输出-目标+');title('输出信号和目标信号');e=T-a;figure(3)plot(time,e)hold onplot([min(time) max(time)],[0 0],'r:')%可用plot(x,zeros(size(x)),'r:')

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值