用于自适应识别和控制的前馈神经网络与在线顺序学习算法(Matlab代码实现)

           目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述

包含用于实现在线顺序学习算法、元认知神经网络和用于自适应识别和控制的前馈神经网络的代码。这些方法还用于解决分类和时间序列预测问题。

📚2 运行结果

 

 

 

 

 

 

 

 

🎉3 参考文献

[1]谭永红.基于BP神经网络的自适应控制[J].控制理论与应用,1994(01):84-88.

👨‍💻4 Matlab代码

主函数部分代码:

clc;clear;
k=1:50000;

yp=[0 0 zeros(1,length(k))];
yphat=[0 0 zeros(1,length(k))];

NNclass=[1 20 1];
in=NNclass(1);n1=NNclass(2);out=NNclass(3);

W1=randn(in+1,n1);
W2=zeros(n1+1,out);

eta=0.1;
e1=0.1;
e2=1.2;

u=-1+2*rand(1,length(k)+2);

f=@(u)((u-0.8)*u*(u+0.5));
error_train=zeros(1,length(k));
difftanh=@(x)(sech(x));

for i=3:length(k)+2
    yp(i)=0.8*yp(i-1)+f(u(i-1));
    
    A1=[1 u(i-1)]*W1;
    y1=tanh(A1);
    A2=[1 y1]*W2;
    N=A2;
    
    yphat(i)=0.8*yphat(i-1)+N;
    
    e=-(yphat(i)-yp(i));
    
    if(abs(e)<e1)
        continue;
    elseif(abs(e)>e1 && abs(e)<e2)
        del2=e;
        del1=difftanh(A1).*(del2*W2(2:end,:)');
        Jw2=[1 y1]'*del2;
        Jw1=[1 u(i-1)]'*del1;
        W2=W2+eta*Jw2;
        W1=W1+eta*Jw1;
        error_train(i-2)=e;
    else
        W1=[W1 randn(2,1)];
        W2=[W2;0];
        
        A1=[1 u(i-1)]*W1;
        y1=tanh(A1);
        A2=[1 y1]*W2;
        N=A2;
        
        del2=e;
        del1=difftanh(A1).*(del2*W2(2:end,:)');
        Jw2=[1 y1]'*del2;
        Jw1=[1 u(i-1)]'*del1;
        W2=W2+eta*Jw2;
        W1=W1+eta*Jw1;
        error_train(i-2)=e;
    end
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值