给你一个实例,希望通过该例子对实现神经网络应用有一定的了解。
%x,y分别为输入和目标向量
x=1:5;
y=[639 646 642 624 652];
%创建一个前馈网络
net=newff(minmax(x),[20,1],{'tansig','purelin'});
%仿真未经训练的网络net并画图
y1=sim(net,x);plot(x,y1,':');
%采用L-M优化算法
net.trainFcn='trainlm';
%设置训练算法
net.trainParam.epochs=500;net.trainParam.goal=10^(-6);
%调用相应算法训练BP网络
[net,tr,yy]=train(net,x,y);
%对BP网络进行仿真
y1=sim(net,x);
%计算仿真误差
E=y-y1;MSE=mse(E)
hold on
%绘制匹配结果曲线
figure;
plot(x,y1,'r*',x,y,'b--')
执行结果

㈡ 人工神经网络单输入单输出系统怎么实现(matlab)
MATLAB写的:
(输入输出隐层节点数都可以改的)
clear all
inputnums=3;%输入层节点
outputnums=1;%输出层节点
hidenums=7;%隐层节点
maxcount=50000;%最大迭代次数
samplenum=19;%一个计数器,无意义
precision=0.00001;%预设精度
yyy=1.3;%yyy是帮助网络加速走出平坦区
alpha=0.02;%学习率设定值
a=0.9;%BP优化算法的一个设定值,对上组训练的调整值按比例修改
error=zeros(1,maxcount+1);%error数组初始化;目的是预分配内存空间
errorp=zeros(1,samplenum);%同上
v=rand(inputnums,hidenums);%1*10;v初始化为一个1*10的随机归一矩阵;v表输入层到隐层的权值
deltv=zeros(inputnums,hidenums);%1*10;内存空间预分配
dv=zeros(inputnums,hidenums);%1*10;
w=rand(hidenums,outputnums);%10*1
deltw=zeros(hidenums,outputnums);%10*1
dw=zeros(hidenums,outputnums);%10*1
samplelist=1:0.5:10;%样本输入值
expectlist=samplelist.^(-1);%期望输出值
%expectlist=exp(-samplelist);
[samplelist,minp,maxp]=premnmx(samplelist);
%[expectlist,mint,maxt]=premnmx(expectlist);
count=1;
while(count<=maxcount)%结束条件1迭代20000次
    c=1;
    while(c<=samplenum)
        for k=1:outputnums
            d(k)=expectlist(c);%获得期望输出的向量
        end
        for i=1:inputnums
            x(i)=samplelist(c);%获得输入的向量数据
        end
        
        %forward();
        for j=1:hidenums
            net=0.0;
            for i=1:inputnums
                net=net+x(i)*v(i,j);%输入层到隐层的加权和
            end
        y(j)=1/(1+exp(-net));%输出层处理f(x)=1/(1+exp(-x)),单极性sigmiod函数
               %y(j)=1/net;%输出层处理f(x)=1/(1+exp(-x)),单极性sigmiod函数
        end
        for k=1:outputnums
            net=0.0;
            for j=1:hidenums
                net=net+y(j)*w(j,k);
            end
            if count>=2&&error(count)-error(count-1)<=0.0001
               o(k)=1/(1+exp(-net)/yyy);%平坦区加大学习率
                 %o(k)=1/(net/yyy);%平坦区加大学习率
           else o(k)=1/(1+exp(-net));%同上
                %else o(k)=1/net;%同上
            end
        end
        
        %BpError(c)反馈/修改
        errortmp=0.0;
        for k=1:outputnums
            errortmp=errortmp+(d(k)-o(k))^2;%第一组训练后的误差计算
        end
        errorp(c)=0.5*errortmp;%误差E=∑(d(k)-o(k))^2 * 1/2 
    %end
    %backward();
    for k=1:outputnums
        yitao(k)=(d(k)-o(k))*o(k)*(1-o(k));%输出层误差偏导
    end
    for j=1:hidenums
        tem=0.0;
        for k=1:outputnums
            tem=tem+yitao(k)*w(j,k);%为了求隐层偏导,而计算的求和
        end
        yitay(j)=tem*y(j)*(1-y(j));%隐层偏导
    end
    
    %调整各层权值
    for j=1:hidenums
        for k=1:outputnums
            deltw(j,k)=alpha*yitao(k)*y(j);%权值w的调整量deltw(已乘学习率)
            w(j,k)=w(j,k)+deltw(j,k)+a*dw(j,k);%权值调整,这里的dw=deltw(t-1),实际是对BP算法的一个改进措施--增加动量项目的是提高训练速度
            dw(j,k)=deltw(j,k);
        end
    end
    for i=1:inputnums
        for j=1:hidenums
            deltv(i,j)=alpha*yitay(j)*x(i);%同上deltw
            v(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j);
            dv(i,j)=deltv(i,j);
        end
    end
    c=c+1;
    end%第二个while结束;表示一次BP训练结束
    double tmp;
    tmp=0.0;
    for i=1:samplenum
        tmp=tmp+errorp(i)*errorp(i);%误差求和
    end
    tmp=tmp/c;
    error(count)=sqrt(tmp);%误差求均方根,即精度
    if(error(count)<precision)%求另一个结束条件
        break;
    end
    count=count+1;%训练次数加1
end%第一个while结束
error(maxcount+1)=error(maxcount);
p=1:count-1;
plot(p,error(p),'-');%显示误差
p=1:1:10;
t=p.^(-1);
%t=exp(-p);
[pn,minpn,maxpn]=premnmx(p);
simt=zeros(1,10);
%while(a<=9)
   for i=1:10
       x=pn(i);%获得输入的向量数据
       for j=1:hidenums
            net=0.0;
           
                net=net+x*v(1,j);%输入层到隐层的加权和
        
            y(j)=1/(1+exp(-net));%输出层处理f(x)=1/(1+exp(-x)),单极性sigmiod函数
               %y(j)=1/net;%输出层处理f(x)=1/(1+exp(-x)),单极性sigmiod函数
       end
      
            net=0.0;
            for k=1:hidenums
                net=net+y(k)*w(k,1);
            end
            o=1/(1+exp(-net));           
            simt(i)=o;
   end
 % simt=postmnmx(simt,mint,maxt);
figure;
plot(p,t,'*',p,simt,'-'); 
请参考