📄 matlab自适应系统辨识.txt
字号:
自适应系统辨识2007/06/03 00:14网络花了2.5秒的时间来跟踪模型,以后就变得十分精确了,而到了第4秒的时候,系统发生了突变,网络又花了0.2秒的时间来再次跟踪模型。
系统的自适应线性神经网络模型可以被用于保持大量的信息。例如,自适应模型能够被用来在给定时间里得到实际系统的特征。又如,自适应网络可以用于监控系统中,当系统的值有可能引起不稳定时,就发出报警信号。
为了保证线性系统模型对非线性系统在最短的时间跟踪到当前运行点,采样速率要足够快。可以对非线性系统加入小量的噪声,从而加快自适应线性网络能够学习得更快。
%定义输入信号并绘出其曲线
time1=0:0.005:4;
time2=4.005:0.005:6;
time=[time1 time2];
X=sin(sin(time*4).*time*8);
plot(time,X);
title('输入信号X');
xlabel('时间');
ylabel('输入信号');
%定义系统输出,绘出曲线
steps1=length(time1);
[T1,state]=filter([1 -0.5],1,X(1:steps1));
steps2=length(time2);
T2=filter([0.9 -0.6],1,X((1:steps2) + steps1),state);
T=[T1 T2];
figure;
plot(time,T);
title('系统输出T');
xlabel('时间');
ylabel('系统输出');
%将系统输入和输出转换成序列信号
T=con2seq(T);
P=con2seq(X);
%建立网络
lr=0.5;
delays=[0 1];
net=newlin(minmax(cat(2,P{:})),1,delays,lr);
%训练网络
[net,a,e]=adapt(net,P,T);
%绘出网络输出a与系统输出T
figure;
plot(time,cat(2,a{:}),'+',time,cat(2,T{:}),'--');
title('网络输出a与系统输出T');
xlabel('时间');
ylabel('系统输出-- 网络输出+');
%绘出误差曲线
figure;
plot(time,cat(2,e{:}));
title('输出误差');
xlabel('时间');
ylabel('误差');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -