基于时间反向传播 (BPTT)递归神经网络实现非线性系统识别附matlab代码

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 基于时间反向传播 (BPTT)递归神经网络实现非线性系统识别附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机 电力系统

⛄ 内容介绍

基于时间反向传播 (BPTT)递归神经网络实现非线性系统识别附matlab完整代码

⛄ 完整代码

%% Non-Linear System Identification using Backpropagation Throught Time (BPTT)

clc;

clear all;

close all;


%% Training method

BPTT_type='Epochwise';

% BPTT_type='Truncated';


%% system configuration

ts=0.001;

if (strcmp(BPTT_type,'Epochwise'))

   a=20;

   eta = 0.001;    %%%%%% Learning Rate 0-1   eg .01, .05, .005

   t = 0:ts:a;

   l=length(t);

   u = square(pi*t);

else

   a=20;

   eta = 0.05;    %%%%%% Learning Rate 0-1   eg .01, .05, .005

   t = 0:ts:a;

   l=length(t);

   u = square(pi*t);

end


% u = awgn(u,30);

plant=[1 -0.25 0.1045 0.0902]; % Minimum Phase Plant

y(1:2)=0;


for i=3:length(t)

   ph=[y(i-1) y(i-2) cos(2*u(i))+exp(-10*abs(u(i))) u(i-1)];

   y(i)=ph*plant'+.001*randn(1,1);

end


%% RNN architecture


inp=6;  % Input Layer Neurons (2 nodes for u(i) and u(i-1), 2 for y(i-1) and y(i-2) for state 1 feedback + 1 bias

N1=3;   % Middle Layer Neurons

N2=1;   % Output Layer Neurons


window_length=3;

epoch=(length(t)-2)/window_length;


w1=ones(N1,inp);

w2=ones(N2,N1);


y_NN = 0.*y;


j=2;

a1=zeros(N1,length(t));

e = ones(window_length,1);


%% RNN configuration

for k=1:epoch


   for i=1:window_length

   j=j+1;    

       Input_Vec(:,i)=[-y_NN(j-1) -y_NN(j-2) u(j) u(j-1) a1(1,j-1) 1]';

       n1 = w1*Input_Vec(:,i);

       

       a1(:,j)=tansig(n1);    %%%% Hidden Layer Activation Function  % tansig for [-1,+1] % logsig for [0,1]

       

       n2 = w2*a1(:,j);

       

       a2=tansig(n2);    %%%% Output Layer Activation Function  

       

       y_NN(j) = a2;

       

       e(i) = y(j) - y_NN(j);

   

       if(strcmp(BPTT_type,'Epochwise'))

       %% Epochwise BBTT

       Y2(:,i) = 2*dtansig(n2,a2)*e(i); %%%% For Output Layer  Equation (15.40) for n=n1

       Y1(:,i) = diag(dtansig(n1,a1(:,j)),0)*[e + w2'*Y2(:,i)]; %%%% For Hidden Layer

       elseif(strcmp(BPTT_type,'Truncated'))

       %% Truncated BPTT

       Y2(:,i) = 2*dtansig(n2,a2)*e(i); %%%% For Output Layer

       Y1(:,i) = diag(dtansig(n1,a1(:,j)),0)*w2'*Y2(:,i); %%%% For Hidden Layer

       

   end

   end

   

   MSE(k) = mse(e);

   

       w1 = w1 + eta*Y1*Input_Vec';  % Equation (15.41) and (15.44)

       w2 = w2 + eta*Y2(:,i)*a1(:,j)';

%         w2 = w2 + eta*Y2*a1(:,j-i+1:j)';

       

end


for n=1:length(MSE)

MSE_trend(n)=mean(MSE(1:n));

end

10*log10(MSE_trend(n))


figure

semilogy(MSE);

hold on

semilogy(MSE_trend,'r')

title('Objective Function');


figure

plot(t,y,'r')

hold on

plot(t,y_NN,'b')



%% Testing

a=10;

ts=0.001;

t = 0:ts:a;

l=length(t);

u = square(pi*t);

u = awgn(u,30);

plant=[1 -0.25 0.1045 0.0902]; % Minimum Phase Plant

epoch=(length(t)-2)/window_length;


y=0;

y(1:2)=0;


for i=3:length(t)

   ph=[y(i-1) y(i-2) cos(2*u(i))+exp(-10*abs(u(i))) u(i-1)];

   y(i)=ph*plant';

end


y_NN = 0.*y;

j=2;

a1=zeros(N1,length(t));

for k=1:epoch

   for i=1:window_length

   j=j+1;    

       Input_Vec(:,i)=[-y_NN(j-1) -y_NN(j-2) u(j) u(j-1) a1(1,j-1) 1]';

       n1 = w1*Input_Vec(:,i);

       

       a1(:,j)=tansig(n1);    %%%% Hidden Layer Activation Function  % tansig for [-1,+1] % logsig for [0,1]

       

       n2 = w2*a1(:,j);

       

       a2=tansig(n2);    %%%% Output Layer Activation Function  

       

       y_NN(j) = a2;

       

       e(i) = y(j) - y_NN(j);

       

   end

   

   MSE(k) = mse(e);

   

end


for n=1:length(MSE)

MSE_trend(n)=mean(MSE(1:n));

end

10*log10(MSE_trend(n))


figure

semilogy(MSE);

hold on

semilogy(MSE_trend,'r')

title('Objective Function');


figure

plot(t,y,'m')

hold on

plot(t,y_NN,'b')

legend('Actual Output','RNN');

⛄ 运行结果

⛄ 参考文献

[1]TANG Meili, HU Qiong, MA Tinghuai. 基于循环神经网络的语音识别研究[J]. 现代电子技术, 2019, 42(14):5.

⛄ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
10月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
661 0
|
10月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
624 2
|
10月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
243 8
|
10月前
|
机器学习/深度学习 缓存 算法
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
723 1
|
9月前
|
机器学习/深度学习 数据采集 存储
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
1154 0
|
10月前
|
机器学习/深度学习 编解码 并行计算
【创新未发表!】基于BKA算法优化-BP、HO算法优化-BP、CP算法优化-BP、GOOSE算法优化-BP、NRBO算法优化-BP神经网络回归预测比较研究(Matlab代码)
【创新未发表!】基于BKA算法优化-BP、HO算法优化-BP、CP算法优化-BP、GOOSE算法优化-BP、NRBO算法优化-BP神经网络回归预测比较研究(Matlab代码)
539 0
|
SQL 监控 安全
网络安全与信息安全:漏洞、加密与安全意识
随着互联网的迅猛发展,网络安全和信息安全问题日益受到关注。本文深入探讨了网络安全漏洞、加密技术以及提高个人和组织的安全意识的重要性。通过分析常见的网络攻击手段如缓冲区溢出、SQL注入等,揭示了计算机系统中存在的缺陷及其潜在威胁。同时,详细介绍了对称加密和非对称加密算法的原理及应用场景,强调了数字签名和数字证书在验证信息完整性中的关键作用。此外,还讨论了培养良好上网习惯、定期备份数据等提升安全意识的方法,旨在帮助读者更好地理解和应对复杂的网络安全挑战。
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
516 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
380 10
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。

热门文章

最新文章