系統辨識char3 3 遞推最小二乘辨識程式

2021-07-11 20:33:38 字數 1904 閱讀 2108

程式:

clear all

close all

clc%產生n(0,1)正態分佈的隨機雜訊

randn('seed',100);

v=randn(1,60);

%產生m序列

l=60;% m序列的週期

y1=1;y2=1;y3=1;y4=0;%四個移位積存器的輸出初始值

for i=1:l;

x1=xor(y3,y4);

x2=y1;

x3=y2;

x4=y3;

y(i)=y4;

if y(i)>0.5,u(i)=-5;%m序列的幅值為5

else u(i)=5;

endy1=x1;y2=x2;y3=x3;y4=x4;

end

figure(1);

stem(u),grid on

% 遞推最小二乘辨識程式

z(2)=0;z(1)=0;

%觀測值由理想輸出值加雜訊

for k=3:60;%迴圈變數從3到15

z(k)=-1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2)+0.5*v(k);

end%rls遞推最小二乘辨識

c0=[0.001 0.001 0.001 0.001]';

p0=10^3*eye(4,4);

e=0.000000005;%相對誤差

c=[c0,zeros(4,59)];%被辨識引數矩陣的初始值及大小

e=zeros(4,60);%相對誤差的初始值及大小

lamt=1;

for k=3:60;

h1=[-z(k-1),-z(k-2),u(k-1),u(k-2)]';

k1=p0*h1*inv(h1'*p0*h1+1*lamt);%求出k的值

new=z(k)-h1'*c0;

c1=c0+k1*new;%求被辨識引數c

p1=1/lamt*(eye(4)-k1*h1')*p0;

e1=(c1-c0)./c0;%求引數當前值與上一次的值的差值

e(:,k)=e1; %把當前相對變化的列向量加入誤差矩陣的最後一列

c(:,k)=c1;%把辨識引數c 列向量加入辨識引數矩陣的最後一列

c0=c1;%新獲得的引數作為下一次遞推的舊引數

p0=p1;

if norm(e1)<=e

break;%若引數收斂滿足要求,終止計算

endend%分離引數

a1=c(1,:); a2=c(2,:); b1=c(3,:); b2=c(4,:);

ea1=e(1,:); ea2=e(2,:); eb1=e(3,:); eb2=e(4,:);

figure(2);

i=1:60;

plot(i,a1,'k',i,a2,'b',i,b1,'r',i,b2,'g') %畫出辨識結果

legend('a1','a2','b1','b2');

title('遞推最小二乘引數辨識')

figure(3);

i=1:60;

plot(i,ea1,'k',i,ea2,'b',i,eb1,'r',i,eb2,'g') %畫出辨識結果的收斂情況

legend('a1','a2','b1','b2');

title('辨識精度')

結果:

在北京買房 char3

現在北京有一套房子,200萬,假設房價每年 10 乙個軟體工程師每年固定能賺40萬。如果他想買這套房子,不貸款,不漲工資,沒有其他收入,每年不吃不喝不消費,那麼他需要幾年才能攢夠錢買這套房子?include using namespace std int main double houseprice...

百錢百雞 char3

百錢百雞問題 中國古代數學家張丘建在他的 算經 中提出了著名的 百錢買百雞問題 雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問翁 母 雛各幾何?題意給定共 100錢要買百雞,若全買公雞最多買 20只,顯然 x的值在 0 20 之間 同理,y的取值範圍在 0 33 之間,可得到下面的不...

神經網路辨識系統

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...