?? riv01.m
字號(hào):
%RIV(2階)
fidin1=fopen('test1.txt'); % 打開(kāi)test1.txt文件
fidout1=fopen('data1.txt','w'); % 創(chuàng)建data1.txt文件
while ~feof(fidin1) % 判斷是否為文件末尾
tline=fgetl(fidin1); % 從文件讀行
fprintf(fidout1,'%s\n\n',tline); % 把此行數(shù)據(jù)寫入文件data1.txt
end
fclose(fidout1);
u=importdata('data1.txt'); % u
fidin2=fopen('test2.txt'); % 打開(kāi)test2.txt文件
fidout2=fopen('data2.txt','w'); % 創(chuàng)建data2.txt文件
while ~feof(fidin2) % 判斷是否為文件末尾
tline=fgetl(fidin2); % 從文件讀行
fprintf(fidout2,'%s\n\n',tline); % 把此行數(shù)據(jù)寫入文件data.txt
end
fclose(fidout2);
y=importdata('data2.txt'); % y
%RIV,RLS啟動(dòng)
C0=[0.0001 0.0001 0.0001 0.0001]';%直接給出被辨識(shí)參數(shù)的初始值,即一個(gè)充分小的實(shí)向量
P0=10^6*eye(4,4);%直接給出初始狀態(tài)P0,即一個(gè)充分大的實(shí)數(shù)單位矩陣
r=0.99;
C=[C0,zeros(4,299)];%被辨識(shí)參數(shù)矩陣的初始值及大小
e=zeros(4,300);%相對(duì)誤差的初始值及大小
for k=3:100; %開(kāi)始求K
x=[-y(k-1),-y(k-2),u(k-1),u(k-2)]'; m=r+x'*P0*x; n=inv(m); K=P0*x*n;%求K的值
C1=C0+K*(y(k)-x'*C0);%求被辨識(shí)參數(shù)C
P1=(P0-K*x'*P0)/r;%求出 P(k)的值
P0=P1;
e1=C1-C0;%求參數(shù)當(dāng)前值與上一次的值的差值
e2=e1./C0;%求參數(shù)的相對(duì)變化
e(:,k)=e2;
C0=C1;%新獲得的參數(shù)作為下一次遞推的舊參數(shù)
C(:,k)=C1;%把辨識(shí)參數(shù)c 列向量加入辨識(shí)參數(shù)矩陣的最后一列
end%RLS啟動(dòng)結(jié)束
C1
z=zeros(300,1);
for k=101:300; %開(kāi)始求K
x=[-y(k-1),-y(k-2),u(k-1),u(k-2)]';z1=[-z(k-1),-z(k-2),u(k-1),u(k-2)]';
m=r+x'*P0*z1; n=inv(m); K=P0*z1*n;%求K的值
C1=C0+K*(y(k)-x'*C0);%求被辨識(shí)參數(shù)C
P1=(P0-K*x'*P0)/r;%求出 P(k)的值
P0=P1;
z1(k)=z1'*C1;%求z(k)
e1=C1-C0;%求參數(shù)當(dāng)前值與上一次的值的差值
e2=e1./C0;%求參數(shù)的相對(duì)變化
e(:,k)=e2; %把當(dāng)前相對(duì)變化的列向量加入誤差矩陣的最后一列
C0=C1;%新獲得的參數(shù)作為下一次遞推的舊參數(shù)
C(:,k)=C1;%把辨識(shí)參數(shù)c 列向量加入辨識(shí)參數(shù)矩陣的最后一列
end%循環(huán)結(jié)束
%分離參數(shù)
C1
a1=C(1,:); a2=C(2,:) ; b1=C(3,:) ; b2=C(4,:) ; ea1=e(1,:) ; ea2=e(2,:) ; eb1=e(3,:) ; eb2=e(4,:) ;
subplot(2,1,1)
i=1:300;%橫坐標(biāo)從1到300
plot(i,a1,'r',i,a2,'r:',i,b1,'g',i,b2,'g:') %畫出a1,a2,b1,b2的各次辨識(shí)結(jié)果
title('被辨識(shí)參數(shù)每次遞推估計(jì)值的圖形')
subplot(2,1,2)
i=1:300; %橫坐標(biāo)從1到300
plot(i,ea1,'r',i,ea2,'g',i,eb1,'b',i,eb2,'r:') %畫出a1,a2,b1,b2的各次辨識(shí)結(jié)果的收斂情況
title('被辨識(shí)參數(shù)的相對(duì)誤差變化的圖形')
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -