【RNN】基于RNN的动态系统参数辨识matlab仿真

1.软件版本

matlab2017b

2.本算法理论知识

3.部分源码

clc;
clear;
close all;
warning off;
addpath 'func\'


data = xlsread('数据1.xlsx');

u = data(:,1:3);
x = data(:,4:5);

%数据归一化
x1= x(:,1);xmin1 = min(x1);xmax1 = max(x1);
x2= x(:,2);xmin2 = min(x2);xmax2 = max(x2);

x1=(x1)/(xmax1);
x2=(x2)/(xmax2);

x = [x1,x2];


u1= u(:,1);umin1 = min(u1);umax1 = max(u1);
u2= u(:,2);umin2 = min(u2);umax2 = max(u2);
u3= u(:,3);umin3 = min(u3);umax3 = max(u3);

u1=(u1)/(umax1);
u2=(u2)/(umax2);
u3=(u3)/(umax3);

u = [u1,u2,u3];

figure;
subplot(211);
plot(u(:,1),'r');
hold on
plot(u(:,2),'b');
hold on
plot(u(:,3),'k');
legend('u_1','u_2','u_3');
title('归一化数据');
subplot(212);
plot(x(:,1),'r');
hold on
plot(x(:,2),'b');
legend('x_1','x_2');
title('归一化数据');

%RNN;
[xpre,A,B,C,D] = func_RNN(u,x);

 

figure;
subplot(211);
plot(x(:,1),'r');
hold on
plot(xpre(1,:),'b');
legend('真实信号','辨识信号');
title('RNN效果-辨识');
subplot(212);
plot(x(:,2),'r');
hold on
plot(xpre(2,:),'b');
legend('真实信号','辨识信号');
title('RNN效果-辨识');

axis([50,length(x),-1.5,1.5]);

figure;
subplot(211);
plot(x(:,1)-xpre(1,:)','k');
title('RNN效果-误差');
axis([0,length(x),-0.5,0.5]);
subplot(212);
plot(x(:,2)-xpre(2,:)','k');
title('RNN效果-误差');
axis([50,length(x),-0.5,0.5]);
mean(abs(x(:,1)-xpre(1,:)'))
mean(abs(x(:,2)-xpre(2,:)'))

 

4.仿真结论

5.参考文献

[1]黎波, 严骏, 郭刚,等. 基于DRNN神经网络的挖掘机伺服系统参数辨识[J]. 解放军理工大学学报:自然科学版, 2013(1):4.A05-57 

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/125124059
RNN
今日推荐