资源描述:
《基于bp神经网络的系统建模辨识与预测仿真matlab程序及仿真结果》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、%训练样本输入%测试样本输入%初始化%增广训练样本%增广测试样木%训练样本理想输出%测试样本理想输出%网络输入层节点数%网络输出层节点数%网络隐层节点数%学习率%最大循环次数%期望误差最小值%输入层到隐含层的阈值初始化%隐含层到输出层的阈值初始化%输入层到隐含层的权值初始化%BP神经网络用于系统辨识训练预测程序clearallclc%产生随机序列作为系统输入A=6;xO=l;M=255;f=2;N=60;Q=2*N/3;H=N-Q-l;%初始化fork=l:Nx2=A*xO;%分别用x2和xO表示xi和xi_lxl=mod(x2,M);
2、%x2除以M的余数给xlvl=xl/256;%xl除以256得到小于1的随机数给vlifvl-0.5>=011(:,1<)^1针-1;%如果随机数71大于0.5,就乘以系数f减去1,将结else%果存于U的第k列中u(:,k)=vl-l;%不满足条件的运算结果存于矩阵U中endxO=xl;%xi-l=xivO=vl;%vi-l=viendz=zeros(l,N);%输出讼度v=rand(l,N);%随机噪声fork=3:Nz(k)=1.5*z(k-1)-0.7*z(k-2)+1.l*u(k-1)+0.3*u(k-2)-v(k-1)+0.
3、2本v(k-2);end%理想输出作为观察值fork=l:N-2hl(k,:):[-z(k+l),-z(k),u(k+l),u(k),v(k+l),v(k)];%样本矩阵HL赋值zl(k)=z(k+2);%给样本矩阵ZL赋值endHL=(hl-min(min(hl)))/(max(max(hl))-min(min(hl)));%数据归一化ZL=(zl-min(zl))/(max(zl)-min(zl)):%数据归一化P=HL(1:Q,:);pl=IIL(Q:N-2,:);bl=ones(Q,1);b2=ones(H,1);P=[p,bl
4、];Pl=[pl,b2];T=7X(1,1:0)>;Tl=ZL(l,Q:N-2)’;inputNums=6;outputNums=l;hideNums=10;]c二0.03;max_cpoch=3000;error_goal=0.00001;Bl=randn(l,hideNums);B2=randn(1,outputNums);wl=randn(inputNums,hideNums);w2=randn(hideNums,outputNums);%隐含s到输出层的权值初始化Wl=[wl;Bl];%输入层到隐含层的增广权矩阵W2=[w2;B
5、2];%隐含层到输出层的增广权矩阵error=zeros(1,maxepoch);%训练误差%训练样本集P对BP_神经网络进行训练fork=l:max_epochfori=l:Q%单个样本的输入forj=l:hideNumsnet=P(i,:)*W1(:,j);%隐含层神经元的输入y(i,j)=l/(l+exp(-net));%隐含层输出endY(i,:)=[y(i,:),1];%带阈值隐含层输出forj=l:outputNumsnet=Y(i,:)*W2(:,j);%输出层神经元的输入0(i,j)=l/(l+exp(-net));%输
6、出层输出endE=T(i)-0(i);%单个样本训练误差SSE=0.5*E"2;%均方误差ifSSR>=error_goalforc=l:hideNumsforj=l:outputNumsDW2(c,j)=(T(i,j)-0(i,j))*0(i,j)*(l-0(i,j));%输出层误差偏导W2(c,j)=W2(c,j)+lc*DW2(c,j)*Y(i,c);%输出层权值阈值的调整sumDWl=0;sumDWl=sumDWl+W2(c,j)*DW2(c,j);%输出层对前一层的误差endendform=l:inputNumsforn=l:
7、hideNumsDWl(m,n)=Y(i,n)*(1-Y(i,n))*sumDWl;%隐含层误差偏导W1(m,n)=W1(m,n)+lc*DWl(m,n)*P(i,m);%隐含层权值阈值的调整endendendende=T-0;error(:,k)=sumsqr(e)/(2*Q);%样本集训练误差end%输入层到隐含层的权值%输入层到隐介层的阈值%隐含层到输出层的权值%隐含层到输出层的阈值wl=Wl(1:inputNums,:)Bl=Wl(cnd,:)w2=W2(1:hideNums,:)B2=W2(end,:)%测试样木集Pl用于BP
8、祌经网络预测fori=l:Hforj=l:hideNumsnet=Pl(i,:)*W1(:,j);%隐含层的输入y(i,j)=l/(l+exp(-net));%隐含层祌经元输出endY(i,:)=[y(i,