神经网络辨识系统

该博客通过示例展示了如何使用神经网络进行系统辨识。首先,定义了一个动态系统的输入和输出,然后利用神经网络newff进行训练,并用trainlm和learngdm优化算法。最后,对比了系统实际输出与神经网络辨识的输出,通过plot进行可视化展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

clc;close all;clear;

y(1)= 0;
k=1;
u(k)= sin(2*pi*k/250);
f(k)= 0.6*sin(pi*u(k))+0.3*sin(3*pi*u(k))+0.1*sin(5*pi*u(k));
y(k+1)= 0.3*y(k)+f(k);

for k=2:100
    u(k)= sin(2*pi*k/250);
    f(k)= 0.6*sin(pi*u(k))+0.3*sin(3*pi*u(k))+0.1*sin(5*pi*u(k));
    y(k+1)= 0.3*y(k)+0.6*y(k-1)+f(k); 
end

P= [u(2:100);y(2:100);y(1:99)];
T= [y(3:101)];
net= newff(minmax(P),[20,20,1],{'tansig','tansig','purelin'},'trainlm','learngdm','msereg');
[net,tr] = train(net,P,T);

Q= [u(2:100);y(2:100);y(1:99)];
nety= sim(net,Q);
plot(1:99,y(1:99),'b',3:101,nety(1:99),'r');
legend('系统输出','系统辨识');


% clc;close all;clear;
% 
% y(1)= 0;
% 
% for k=1:100
%     u(k)= sin(2*pi*k/25)+sin(2*pi*k/10);
%     f(k)= u(k).^3;
%     y(k+1)= y(k)/(1+y(k).^2)+f(k);
% end
% 
% P=
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值