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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
云原生网关 MSE Higress,422元/月
简介: 基于时间反向传播 (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电子书和数学建模资料


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
25天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GRU网络的MQAM调制信号检测算法matlab仿真,对比LSTM
本研究基于MATLAB 2022a,使用GRU网络对QAM调制信号进行检测。QAM是一种高效调制技术,广泛应用于现代通信系统。传统方法在复杂环境下性能下降,而GRU通过门控机制有效提取时间序列特征,实现16QAM、32QAM、64QAM、128QAM的准确检测。仿真结果显示,GRU在低SNR下表现优异,且训练速度快,参数少。核心程序包括模型预测、误检率和漏检率计算,并绘制准确率图。
86 65
基于GRU网络的MQAM调制信号检测算法matlab仿真,对比LSTM
|
12天前
|
机器学习/深度学习 数据采集 算法
基于MobileNet深度学习网络的MQAM调制类型识别matlab仿真
本项目基于Matlab2022a实现MQAM调制类型识别,使用MobileNet深度学习网络。完整程序运行效果无水印,核心代码含详细中文注释和操作视频。MQAM调制在无线通信中至关重要,MobileNet以其轻量化、高效性适合资源受限环境。通过数据预处理、网络训练与优化,确保高识别准确率并降低计算复杂度,为频谱监测、信号解调等提供支持。
|
7天前
|
机器学习/深度学习 存储 算法
基于MobileNet深度学习网络的活体人脸识别检测算法matlab仿真
本内容主要介绍一种基于MobileNet深度学习网络的活体人脸识别检测技术及MQAM调制类型识别方法。完整程序运行效果无水印,需使用Matlab2022a版本。核心代码包含详细中文注释与操作视频。理论概述中提到,传统人脸识别易受非活体攻击影响,而MobileNet通过轻量化的深度可分离卷积结构,在保证准确性的同时提升检测效率。活体人脸与非活体在纹理和光照上存在显著差异,MobileNet可有效提取人脸高级特征,为无线通信领域提供先进的调制类型识别方案。
|
1天前
|
机器学习/深度学习 数据安全/隐私保护
基于神经网络逆同步控制方法的两变频调速电机控制系统matlab仿真
本课题针对两电机变频调速系统,提出基于神经网络a阶逆系统的控制方法。通过构造原系统的逆模型,结合线性闭环调节器实现张力与速度的精确解耦控制,并在MATLAB2022a中完成仿真。该方法利用神经网络克服非线性系统的不确定性,适用于参数变化和负载扰动场景,提升同步控制精度与系统稳定性。核心内容涵盖系统原理、数学建模及神经网络逆同步控制策略,为工业自动化提供了一种高效解决方案。
|
1天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于模糊神经网络的金融序列预测算法matlab仿真
本程序为基于模糊神经网络的金融序列预测算法MATLAB仿真,适用于非线性、不确定性金融数据预测。通过MAD、RSI、KD等指标实现序列预测与收益分析,运行环境为MATLAB2022A,完整程序无水印。算法结合模糊逻辑与神经网络技术,包含输入层、模糊化层、规则层等结构,可有效处理金融市场中的复杂关系,助力投资者制定交易策略。
|
16天前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-LSTM-SAM网络时间序列预测算法。使用Matlab2022a开发,完整代码含中文注释及操作视频。算法结合卷积层提取局部特征、LSTM处理长期依赖、自注意力机制捕捉全局特征,通过粒子群优化提升预测精度。适用于金融市场、气象预报等领域,提供高效准确的预测结果。
|
24天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于机器学习的人脸识别算法matlab仿真,对比GRNN,PNN,DNN以及BP四种网络
本项目展示了人脸识别算法的运行效果(无水印),基于MATLAB2022A开发。核心程序包含详细中文注释及操作视频。理论部分介绍了广义回归神经网络(GRNN)、概率神经网络(PNN)、深度神经网络(DNN)和反向传播(BP)神经网络在人脸识别中的应用,涵盖各算法的结构特点与性能比较。
|
22天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目使用MATLAB 2022a实现时间序列预测算法,完整程序无水印。核心代码包含详细中文注释和操作视频。算法基于CNN-LSTM-SAM网络,融合卷积层、LSTM层与自注意力机制,适用于金融市场、气象预报等领域。通过数据归一化、种群初始化、适应度计算及参数优化等步骤,有效处理非线性时间序列,输出精准预测结果。
|
21小时前
|
机器学习/深度学习 数据采集 算法
基于WOA鲸鱼优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本内容介绍了一种基于CNN-LSTM-SAM网络与鲸鱼优化算法(WOA)的时间序列预测方法。算法运行于Matlab2022a,完整程序无水印并附带中文注释及操作视频。核心流程包括数据归一化、种群初始化、适应度计算及参数更新,最终输出最优网络参数完成预测。CNN层提取局部特征,LSTM层捕捉长期依赖关系,自注意力机制聚焦全局特性,全连接层整合特征输出结果,适用于复杂非线性时间序列预测任务。
|
6天前
|
机器学习/深度学习 数据采集 算法
基于yolov2和googlenet网络的疲劳驾驶检测算法matlab仿真
本内容展示了基于深度学习的疲劳驾驶检测算法,包括算法运行效果预览(无水印)、Matlab 2022a 软件版本说明、部分核心程序(完整版含中文注释与操作视频)。理论部分详细阐述了疲劳检测原理,通过对比疲劳与正常状态下的特征差异,结合深度学习模型提取驾驶员面部特征变化。具体流程包括数据收集、预处理、模型训练与评估,使用数学公式描述损失函数和推理过程。课题基于 YOLOv2 和 GoogleNet,先用 YOLOv2 定位驾驶员面部区域,再由 GoogleNet 分析特征判断疲劳状态,提供高准确率与鲁棒性的检测方法。