基于BP神经网络的轨迹跟踪matlab程序

1 理论介绍
BP网络逼近的结构如图7-6所示,图中k为网络的迭代步骤,u(k)和y(k)为逼近器的输入。BP为网络逼近器,y(k)为被控对象的实际输出,y(k)为BP网络的输出。将系统输出y(k)及输入(k)的值作为逼近器BP的输人,将系统输出与网络输出的误差作为逼近器的调整信号。
在这里插入图片描述
在这里插入图片描述
BP算法的学习过程由正向传播和反向传播组成。在正向传播过程中,输入信息从输入层经隐层逐层处理,并传向输出层,每层神经元(节点)的状态只影响下一层神经元的状态。如果在输出层不能得到期望的输出,则转至反向传播,将误差信号(理想输出与实际输出之差)按连接通路反向计算,由梯度下降法调整各层神经元的权值,使误差信号减小。
(1)前向传播:计算网络的输出隐层神经元的输入为所有输入的加权之和,即
在这里插入图片描述
(2)反向传播:采用δ学习算法,调整各层间的权值
根据梯度下降法,权值的学习算法如下:
输出层及隐层的连接权值2学习算法为
在这里插入图片描述
在这里插入图片描述
2 算例
在这里插入图片描述
3 运行结果
1)跟踪轨迹
在这里插入图片描述

2)跟踪误差
在这里插入图片描述

3)敏感度
在这里插入图片描述

4 matlab程序

%% 基于BP神经网络的轨迹跟踪
clc
clear 
close all;
%% 参数
%学习效率
xite=0.50;
%动量因子
alfa=0.05;
%权重值
w2=rands(6,1);
w2_1=w2;
w2_2=w2_1;
w1=rands(2,6);
w1_1=w1;
w1_2=w1;
dw1=0*w1;
%初始状态
x=[0,0]';
u_1=0;
y_1=0;
I=[0,0,0,0,0,0]';
Iout=[0,0,0,0,0,0]';
FI=[0,0,0,0,0,0]';
%采样周期
ts=0.001;
for k=1:1:1000
 %时间  
time(k)=k*ts;
%% 输入层
%BP输入1
u(k)=0.50*sin(3*2*pi*k*ts);
%控制对象输出,BP输入2
y(k)=u_1^3+y_1/(1+y_1^2);
%% 隐含层
for  j=1:1:6   
     I(j)=x'*w1(:,j);
     Iout(j)=1/(1+exp(-I(j)));
end   
%% 输出层
yn(k)=w2'*Iout;         % Output of NNI networks
%% 跟踪误差
e(k)=y(k)-yn(k);    % Error calculation
%% 反向传播
w2=w2_1+(xite*e(k))*Iout+alfa*(w2_1-w2_2);

for j=1:1:6
   FI(j)=exp(-I(j))/(1+exp(-I(j)))^2;
end

for i=1:1:2
   for j=1:1:6
      dw1(i,j)=e(k)*xite*FI(j)*w2(j)*x(i);
   end
end
w1=w1_1+dw1+alfa*(w1_1-w1_2);
%% 敏感度
%%%%%%%%%%%%%%Jacobian%%%%%%%%%%%%%%%%
yu=0;
for j=1:1:6
   yu=yu+w2(j)*w1(1,j)*FI(j);
end
dyu(k)=yu;
%% 迭代更新
x(1)=u(k);
x(2)=y(k);

............。。。。。略
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电磁MATLAB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值