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

📄 wnn.m

📁 单输入单输出函数小波网络
💻 M
字号:
%真正的单输入单输出函数小波网络,用户需安装matlab神经网络工具箱
a=10;
n=a;%设置小波神经元的数量

%建立单值函数小波网络
net=network(1,2,[1;0],[1;0],[0,0;1,0],[0,1],[0,1]);

net.layers{1}.size=n;
net.layers{2}.size=1;

net.layers{1}.transferFcn = 'kugfcn';%可以替换为其他的小波母函数如: radbasmorlet
net.layers{2}.transferFcn = 'purelin';
%net.inputs{1}.range = [-1,2];%设定函数输入量的范围
net.trainFcn='traingdx' ;
net.adaptfcn='trains';
net.initfcn='initlay';
net.performfcn='mse';
net.trainParam.epochs=10000;
net.trainParam.goal=0.001;
net.trainParam.min_grad=1e-22;
net.biases{1}.learnFcn='learngdm';
net.inputweights{1,1}.learnFcn='learngdm';
net.layerweights{2,1}.learnFcn='learngdm';
net.layers{1}.initFcn='initwb';
net.layers{2}.initFcn='initwb';
net=init(net);
%%%%%%%%%%样本生成
P1=[-4:0.1:4];
P2=[-3.3:0.4:3.7];
T1=hermit(P1)+0.3*randn(size(P1));%加入标准偏差为0.3,均值为0,的正态分布噪声
T2=hermit(P2)+0.3*randn(size(P2));

%%%%%%%%%%%%%%样本预处理
[P11,minP,maxP]=premnmx(P1);
[P21]=tramnmx(P2,minP,maxP);

[T11,minT,maxT]=premnmx(T1);
[T21]=tramnmx(T2,minT,maxT);
val.P=P21;
val.T=T21;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  网络的初始化算法 设定初始区间

matrixlw=[-10/n,10/n];

matrixb=[-4,4];
matrixiw=[-8,8];
x=10/n;
y=4;
z=8;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[m1,n1]=size(net.iw{1,1});
[m2,n2]=size(net.lw{2,1});
[m3,n3]=size(net.b{1});
iw1=premnmx(rand(m1,n1));
lw1=premnmx(rand(m2,n2));
bb=premnmx(rand(m3,n3));
net.iw{1,1}=z*iw1;
net.lw{2,1}=x*lw1;
net.b{1}=y*bb;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%初始化完毕
net.trainParam.max_fail=200;
[net,tr]=train(net,P11,T11,[],[],val);%%%%%%最优停止法训练

Px=[-4:0.008:4];
[Px1]=tramnmx(Px,minP,maxP);
A22=sim(net,Px1);
[T23]=postmnmx(A22,minT,maxT);

%%%%%%%%%%%%%%%%%%%%%%%%%%
erro=mse(hermit(Px)-T23)

⌨️ 快捷键说明

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