📄 linear_recognize1.asv
字号:
%自适应线性辨识
%************************************
%给定一个信号X,其持续时间为6秒,采样为每秒钟200次.用这个系统进行输入
time1=0:0.005:4;
time2=4.005:0.005:6;
time=[time1 time2];
X=sin(sin(time*4).*time*8);
figure(1);
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(2);
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,误差e
%***********************************
%网络测试
figure(3);
plot(time,cat(2,a{:}),'+',time,cat(2,T{:}),'--');
title('网络输出a与系统输出T');
xlabel('时间');
ylabel('系统输出--网络输出+');
%************************************
%求误差并画曲线
figure(4);
plot(time,cat(2,e{:}));
title('误差输出');
xlabel('时间');
ylabel('误差');
%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -