📄 辨识主程序.m
字号:
clear;
L=3000;
fid1=fopen('c:\MATLAB\work\zfq.01.data','r'); %导入数据进行建模
data=fscanf(fid1,'%f')';
data=reshape(data,4,3000)';
t=data(:,1);
k=t+3;
u=data(:,2);
z=data(:,4);
fclose(fid1);
v=randn(1,3003);
figure(1);
subplot(3,1,1);
stem(u),grid on;
subplot(3,1,2);
plot(v),grid on;
subplot(3,1,3);
plot(z),grid on;
z=zeros(7,L);zs=zeros(7,L);zm=zeros(7,L);zmd=zeros(7,L);
z(2)=0;z(1)=0;zs(2)=0;zs(1)=0;zm(2)=0;zm(1)=0;zmd(2)=0;zmd(1)=0;
c0=[0.001 0.001 0.001 0.001 0.001 0.001 0.001]';
p0=10^6*eye(7,7);
E=0.0000000000000005;
c=[c0,zeros(7,14)];
e=zeros(7,15);
for k=4:L;
a=k
z(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-2)+0.5*u(k-3)+v(k)+0.9*v(k-1)+0.7*v(k-2);
h1=[-z(k-1),-z(k-2),u(k-2),u(k-3),v(k),v(k-1),v(k-2)]'
x=h1'*p0*h1+1;
x1=inv(x);
k1=p0*h1*x1;
d1=z(k)-h1'*c0;
c1=c0+k1*d1
zs(k)=-1.5*z(k-1)+0.7*z(k-2)+u(k-2)+0.5*u(k-3);
zm(k)=[-z(k-1),-z(k-2),u(k-2),u(k-3)]*[c1(1);c1(2);c1(3);c1(4)];
zmd(k)=h1'*c1;
e1=c1-c0;e2=e1;
e(:,k)=e2;
c0=c1;
c(:,k)=c1;
p1=p0-k1*k1'*[h1'*p0*h1+1];
p0=p1;
if e2<=E
break;
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -