基于 ANN 进行非线性系统识别附matlab代码

简介: 基于 ANN 进行非线性系统识别附matlab代码

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

基于人工神经网络(Artificial Neural Network, ANN)进行非线性系统识别是一种常见的方法。ANN通过模拟人脑神经元之间的连接和信息传递过程,能够学习和建模非线性系统的输入输出关系。下面将介绍基于ANN进行非线性系统识别的基本原理和步骤。

  1. 数据准备:收集非线性系统的输入和输出数据,并进行预处理,如归一化或标准化处理,以提高网络训练的效果和准确性。
  2. 网络结构设计:选择合适的ANN结构,包括输入层、隐藏层和输出层的节点数、层数以及激活函数的选择。网络结构的设计应根据具体问题和数据特点进行调整。
  3. 数据划分:将数据集划分为训练集、验证集和测试集。训练集用于网络参数的训练,验证集用于调整网络结构和防止过拟合,测试集用于评估网络的性能。
  4. 网络训练:使用训练集数据对ANN进行训练,通过反向传播算法或其他优化算法来更新网络参数,使得网络的输出逼近实际输出。
  5. 网络验证和调整:使用验证集数据评估网络的性能,并根据验证结果进行网络结构的调整,如调整隐藏层节点数、增加正则化项等,以提高网络的泛化能力。
  6. 网络测试:使用测试集数据对训练好的ANN进行性能评估,验证其在未知数据上的准确性和鲁棒性。
  7. 结果分析:分析网络输出与实际输出之间的差异,评估网络的识别精度和预测能力,并根据需要进行进一步优化或改进。

需要注意的是,ANN的训练过程是一个迭代优化的过程,可能需要多次调整网络参数和结构,并进行多轮训练才能得到较好的结果。此外,对于复杂的非线性系统,可能需要更深层次、更复杂的ANN结构来提高识别性能。

⛄ 部分代码

clear; clc; close all;%Input%--------------------------------------------------------------------------%Nodes Coordinates and Degrees of Freedoms%------------------------------------------Node{1}.x=0; Node{1}.y=0;                                 %Node CoordinatesNode{2}.x=5; Node{2}.y=0;Node{3}.x=5; Node{3}.y=5;Node{4}.x=0; Node{4}.y=5;Node{1}.DOFx=1;  Node{1}.DOFy=2;  Node{1}.DOFtheta=3;     %Indices for x, y, and Rotation Degree of Freedoms.  Node{2}.DOFx=4;  Node{2}.DOFy=5;  Node{2}.DOFtheta=6;Node{3}.DOFx=7;  Node{3}.DOFy=8;  Node{3}.DOFtheta=9;Node{4}.DOFx=10; Node{4}.DOFy=11; Node{4}.DOFtheta=12;%Material%-----------------Material{1}.E=200e9;                                      %Modulus of ElasticityMaterial{1}.f_y=400e6;                                    %Stress Beyond Which the Stiffness DecreasesMaterial{1}.Ep=2e9;                                       %Reduced Modulus of ElasticityMaterial{1}.rho=7800;                                     %Material Density%Elements Nodes Connectivity, Area, Moment of Inertia, Modulus of Elasticity, Density, and Rayleigh Damping Parameters%---------------------------------------------------------------------------------------------------------------------Element{1}.Nodes=[1 4];                                   %Element Nodes ConnectivityElement{1}.Material=1;                                    %Element MaterialElement{1}.alpha=0.001;                                   %Element Rayleigh Damping Parameter alphaElement{1}.beta=0.001;                                    %Element Rayleigh Damping Parameter betab1=0.1; h1=0.1;for i=1:1:10Element{1}.Section{i}.x=1/sqrt(3)*b1/2*[-1 -1 1 1];       %Element Section integation points x coordinatesElement{1}.Section{i}.y=1/sqrt(3)*h1/2*[-1 1 -1 1];       %Element Section integation points y coordinatesElement{1}.Section{i}.A=b1*h1/4*[1 1 1 1];                %Element Section integation points areasElement{1}.Section{i}.e=[0 0 0 0];                        %Element Section integation points initial stressesElement{1}.Section{i}.s=[0 0 0 0];                        %Element Section integation points initial strainsElement{1}.Section{i}.k=[0 0 0 0];                        %Element Section integation points initial hardeningendElement{2}.Nodes=[3 2];Element{2}.Material=1; Element{2}.alpha=0;Element{2}.beta=0.00001;b2=0.1; h2=0.1;for i=1:1:10Element{2}.Section{i}.x=1/sqrt(3)*b2/2*[-1 -1 1 1];     Element{2}.Section{i}.y=1/sqrt(3)*h2/2*[-1 1 -1 1];    Element{2}.Section{i}.A=b2*h2/4*[1 1 1 1]; Element{2}.Section{i}.e=[0 0 0 0];Element{2}.Section{i}.s=[0 0 0 0]; Element{2}.Section{i}.k=[0 0 0 0]; endElement{3}.Nodes=[4 3];Element{3}.Material=1; Element{3}.alpha=0;Element{3}.beta=0.00001;b3=0.1; h3=0.1;for i=1:1:10Element{3}.Section{i}.x=1/sqrt(3)*b3/2*[-1 -1 1 1];     Element{3}.Section{i}.y=1/sqrt(3)*h3/2*[-1 1 -1 1];    Element{3}.Section{i}.A=b3*h3/4*[1 1 1 1]; Element{3}.Section{i}.e=[0 0 0 0];Element{3}.Section{i}.s=[0 0 0 0]; Element{3}.Section{i}.k=[0 0 0 0]; end%Support, Support Displacement, and Applied Force%-------------------------------------------------steps=1000;                                               %Number of Analysis StepsSupport=[1 2 3 4 5 6];                                    %Indices of Degrees of Freedom of Supports NSupport=length(Support);U_s=zeros(NSupport,steps);                                %Support Displacement Matrix of Size (Number of Supports, Number of Analysis Steps)                           dU_s=zeros(NSupport,steps);                               %Support Velocity Matrix of Size (Number of Supports, Number of Analysis Steps)    ddU_s=zeros(NSupport,steps);                              %Support Acceleration Matrix of Size (Number of Supports, Number of Analysis Steps)    NNode=length(Node); Force=zeros(3*NNode,steps);                               %Force Matrix of Size (Number of Degrees of Freedoms=3*Number of Nodes, Number of Analysis Steps)Force(10,:)=600.*[1:steps].*sin(1*[1:steps]/10);fs=300;                                                   %Sampling Frequencydelta=10e-4;                                              %Convergance criterion for residual force%Processing%--------------------------------------------------------------------------[Node,Element,F_s,Elements_N]=Analysis(Node,Element,Material,Support,U_s,dU_s,ddU_s,Force,fs,delta);shear=zeros(steps,1);for i=1:1:stepsshear(i)=Elements_N{i}{1}.f(1);end%Output%--------------------------------------------------------------------------Mag_Factor=1;                                             %Magnification Factor for Plotstep=steps;                                               %Step Number to be PlottedPlot_Results(Node,Element,Mag_Factor,0,step); title(strcat('Deflected Shape @ Step=',num2str(step)));Plot_Results(Node,Element,Mag_Factor,1,step); title(strcat('Axial Strain @ Step=',num2str(step)));Plot_Results(Node,Element,Mag_Factor,2,step); title(strcat('Curvature @ Step=',num2str(step)));Plot_Results(Node,Element,Mag_Factor,3,step); title(strcat('Axial Force @ Step=',num2str(step))); Plot_Results(Node,Element,Mag_Factor,4,step); title(strcat('Moment @ Step=',num2str(step))); t=[0:1:steps-1]/fs;figure;subplot(4,1,1);plot(t,Force(10,:));xlabel('Time (s)');ylabel('Force (N)');title('Horizontal Force, DISP, VEL, and ACC at Node 4');subplot(4,1,2);plot(t,Node{4}.Ux);xlabel('Time (s)');ylabel('DISP (m)');subplot(4,1,3);plot(t,Node{4}.dUx);xlabel('Time (s)');ylabel('VEL (m/s)');subplot(4,1,4);plot(t,Node{4}.ddUx);xlabel('Time (s)');ylabel('ACC (m/s^2)');%Identification using neural network%--------------------------------------------------------------------------X=Force(10,:);                         %Input of neural network is forcesT=[Node{4}.Ux*100000 ; shear'];        %Output of neural network is displacement and base shear[X,~] = tonndata(X,1,0);               %Change format of input data[T,~] = tonndata(T,1,0);               %Change format of output datanet = narxnet(0,4,4);                  %Create (nonlinear autoregressive with external input) network with 0 input delays and 4 output delays[Xs,Xi,Ai,Ts] = preparets(net,X,{},T); %Prepares data for trainingnet = train(net,Xs,Ts,Xi,Ai);          %Train the networkview(net)                              %View the networkYopen = net(Xs,Xi,Ai);                 %Predict Outputnet = closeloop(net);                  %convert to closed loop neural networkview(net);                             %view closed-loop network[Xs,Xi,Ai,Ts] = preparets(net,X,{},T); %Prepares data for trainingnet = train(net,Xs,Ts,Xi,Ai);          %Train the networkYclosed = net(Xs,Xi,Ai);               %Predict Output%Plot output with predicted output%--------------------------------------------------------------------------T=cell2mat(T);Yopen=cell2mat(Yopen);Yclosed=cell2mat(Yclosed);figure;plot(t(5:end),T(1,5:end)/100000,'b-',t(5:end),Yopen(1,:)/100000,'r--',t(5:end),Yclosed(1,:)/100000,'k-.'); xlabel('Time (sec)');  ylabel('DISP (m)');legend('Actual','Predicted (openloop)','Predicted (closedloop)');figure;plot(T(1,5:end)/100000,T(2,5:end),'b-',Yopen(1,:)/100000,Yopen(2,:),'r--',Yclosed(1,:)/100000,Yclosed(2,:),'k-.'); xlabel('Interstory Drift (m)');ylabel('Interstory Shear (N)');legend('Actual','Predicted (openloop)','Predicted (closedloop)');

⛄ 运行结果

⛄ 参考文献

[1] 曲东才.基于ANN逆模型的非线性系统辨识和控制仿真[C]//中国控制与决策学术年会.2006.DOI:ConferenceArticle/5aa2fa4cc095d72220ac9bd4.

⛳️ 代码获取关注我

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

🍅 仿真咨询

1.卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
2.图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
3.旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划
4.无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
5.传感器部署优化、通信协议优化、路由优化、目标定位
6.信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号
7.生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化
8.微电网优化、无功优化、配电网重构、储能配置
9.元胞自动机交通流 人群疏散 病毒扩散 晶体生长


相关文章
|
26天前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
100 2
|
26天前
|
canal 算法 vr&ar
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
|
26天前
|
机器学习/深度学习 存储 算法
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
|
1月前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
1月前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
151 14
|
26天前
|
机器学习/深度学习 算法 安全
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
【图像处理】使用四树分割和直方图移动的可逆图像数据隐藏(Matlab代码实现)
109 2
|
1月前
|
机器学习/深度学习 算法
【概率Copula分类器】实现d维阿基米德Copula相关的函数、HACs相关的函数研究(Matlab代码实现)
【概率Copula分类器】实现d维阿基米德Copula相关的函数、HACs相关的函数研究(Matlab代码实现)
|
1月前
|
机器学习/深度学习 传感器 算法
【裂纹检测】检测和标记图片中的裂缝(Matlab代码实现)
【裂纹检测】检测和标记图片中的裂缝(Matlab代码实现)
146 5
|
1月前
|
存储 算法 安全
【多目标工程应用】基于MOGWO的地铁隧道上方基坑工程优化设计研究(Matlab代码实现)
【多目标工程应用】基于MOGWO的地铁隧道上方基坑工程优化设计研究(Matlab代码实现)
|
1月前
|
传感器 机器学习/深度学习 编解码
【电缆】中压电缆局部放电的传输模型研究(Matlab代码实现)
【电缆】中压电缆局部放电的传输模型研究(Matlab代码实现)

热门文章

最新文章