资源描述:
《小波神经网络.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、clcclear%%训练数据预测数据提取及归一化%下载四类语音信号loaddata1c1loaddata2c2loaddata3c3loaddata4c4%四个特征信号矩阵合成一个矩阵data(1:250,:)=c1(251:500,:);data(251:500,:)=c2(251:500,:);data(501:750,:)=c3(251:500,:);data(751:1000,:)=c4(251:500,:);%从1到2000间随机排序% k=rand(1,1000);% [m,n]=sort(k);%输入输出数据input=data(:,2:11);output1=data(
2、:,1);%把输出从1维变成4维output=zeros(1000,4);fori=1:1000 switchoutput1(i) case1 output(i,:)=[1000]; case2 output(i,:)=[0100]; case3 output(i,:)=[0010]; case4 output(i,:)=[0001]; endend%随机提取1500个样本为训练样本,500个样本为预测样本%input_train=input(n(1:250),:)';%output_tra
3、in=output(n(1:250),:)';input=input(1:250,:);output=output(1:250,:);%input_test=input(1501:2000,:)';%output_test=output(1501:2000,:)';M=size(input,2);%输入节点个数N=size(output,2);%输出节点个数n=10;%隐形节点个数lr1=0.0001;%学习概率lr2=0.0001;%学习概率maxgen=1000;%迭代次数%权值初始化Wjk=randn(n,M);Wjk_1=Wjk;Wjk_2=Wjk_1;Wij=randn(N,n)
4、;Wij_1=Wij;Wij_2=Wij_1;a=randn(1,n);a_1=a;a_2=a_1;b=randn(1,n);b_1=b;b_2=b_1;%节点初始化y=zeros(1,N);net=zeros(1,n);net_ab=zeros(1,n);%权值学习增量初始化d_Wjk=zeros(n,M);d_Wij=zeros(N,n);d_a=zeros(1,n);d_b=zeros(1,n);%%输入输出数据归一化[inputn,inputps]=mapminmax(input');[outputn,outputps]=mapminmax(output'); inputn=inp
5、utn';outputn=outputn';error=zeros(1,maxgen);%%网络训练fori=1:maxgen %误差累计 error(i)=0; %循环训练 forkk=1:size(input,1) x=inputn(kk,:); yqw=outputn(kk,:); forj=1:n fork=1:M net(j)=net(j)+Wjk(j,k)*x(k); net_ab(j)=(net(j)-b(j))/a(j); end temp=mymorlet(
6、net_ab(j)); fork=1:N y=y+Wij(k,j)*temp; %小波函数 end end %计算误差和 error(i)=error(i)+sum(abs(yqw-y)); %权值调整 forj=1:n %计算d_Wij temp=mymorlet(net_ab(j)); fork=1:N d_Wij(k,j)=d_Wij(k,j)-(yqw(k)-y(k))*temp; end %计算d
7、_Wjk temp=d_mymorlet(net_ab(j)); fork=1:M forl=1:N d_Wjk(j,k)=d_Wjk(j,k)+(yqw(l)-y(l))*Wij(l,j); end d_Wjk(j,k)=-d_Wjk(j,k)*temp*x(k)/a(j); end