資源簡介
系統辨識課上的實驗作業,該壓縮文件里包含我的實驗報告以及matlab源代碼,包括由M序列產生白噪聲,遞推最小二乘法以及使用F-Test法進行模型階次辨識,比較適合學生。

代碼片段和文件信息
close?all;
clear?all;
%%%%%%%%%%%人機對話%%%%%%%%%%%%%%%%%
lambda=input(‘噪聲標準差為(0.0或0.1或0.5或1.0)??‘);
L=input(‘數據長度為(100或300或500)??‘);
miu=input(‘遺忘因子為(01之間)??‘);
%%%%%%%%設定模型階次從2到6,即Nbeg=2Nend=6(假定na=nb)%%%%%%%%%
%%%%%%%%%%%%%%%賦初值并生成M序列和噪聲序列%%%%%%%%%%
%%%%%%%%%%%%%%生成a=1P=4的M序列%%%%%%%%%%%%%%%%%
M=[0?1?0?1?0?];
Np=2^4-1;
for?k=1:534
?????if?M(5)==0?
????????u(k)=1;end;
?????if?M(5)==1??
????????u(k)=-1;end;
?????for?i=5:-1:2
????????M(i)=M(i-1);
?????end
?????M(1)=M(2)+M(5);
?????if?M(1)==2?
????????M(1)=0;end;
end
%%%%%%%%%%%%%%%生成白噪聲v(k)%%%%%%%%%%%%%%%%%%%%
A=179;??xi=11;??M=32768;
for?k=1:534???????
????ksai=0;
????for?i=1:12
????????xi=A*xi;
????????xi=mod(xiM);
????????ksai=ksai+(xi/M);
????end
v(k)=ksai-6;
end
%%%%%%%%%%%%%%%%%過程仿真%%%%%%%%%%%%%%%%
z(1)=0;
z(2)=0;
for?k=3:length(u)
????z(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2)+lambda*v(k);%
end
%%%%%%%%%%%%%%%%%%模型參數估計,RLS算法%%%%%%%%%%%%
for?n=2:6
????for?i=1:2*n
????????theta(in)=eps;
????end
????P=eye(2*n);
????for?i=1:L
????????for?j=1:n
????????????if?(i-j)<=0
????????????????H(ji)=0;
????????????else
????????????H(ji)=-z(i-j);
????????????end
????????end?
????????for?m=(n+1):2*n
????????????if?(i-m+n)<=0
????????????????H(mi)=0;
????????????else
????????????H(mi)=u(i-m+n);
????????????end
????????end
????end
????J(n)=0;
????
????for?k=1:L
????????K=P*H(:k)*inv(H(:k)‘*P*H(:k)+miu);
????????J(n)=miu*(J(n)+((z(k)-H(:k)‘*theta(:n))^2/(H(:k)‘*P*H(:k)+miu)));
????????theta(:n)=theta(:n)+K*(z(k)-H(:k)‘*theta(:n));
????????P=((eye(2*n)-K*H(:k)‘)*P)/miu;
????end
end
%%%%%%%%%%%%%%%模型階次識別%%%%%%%%%%%%%%%%??
if?L==100
????for?n=1:5
????????if?(J(n)-J(n+1))*(L-2*n-2)/(2*J(n+1))<=3.09
???????????N=n+1
???????????break
????????end
????end
end
if?L==300
?????for?n=1:5
????????if?(J(n)-J(n+1))*(L-2*n-2)/(2*J(n+1))<=3.03
???????????N=n+1
???????????break
????????end
?????end
end
if?L==500
?????for?n=1:5
????????if?(J(n)-J(n+1))*(L-2*n-2)/(2*J(n+1))<=3.01
???????????N=n+1
???????????break
????????end
?????end
end
%%%%%%%%%%%%%%%輸出結果%%%%%%%%%%%%%%%%
if?N==2
????A=theta(1:2N)
????B=theta(3:4N)
end
if?N==3
????A=theta(1:3N)
????B=theta(4:6N)
end???
if?N==4
????A=theta(1:4N)
????B=theta(5:8N)
end
if?N==5
????A=theta(1:5N)
????B=theta(6:10N)
end
if?N==6
????A=theta(1:6N)
????B=theta(7:12N)
end
%%%%%%%%%%%%%%%%%%%計算性能指標%%%%%%%%%%%%%%%%%%
lam1=sqrt(J(N)/(L-2*N))%%%%%%%%%%%%%%噪聲標準差的估計
lam2=sum(B)/(1+sum(A))%%%%%%%%%%%%%模型靜態增益估計
a0=1;a1=-1.5;a2=0.7;b0=0;b1=1;b2=0.5;
thetazhen=[a1a2b1b2]‘;
chazhi=thetazhen-theta(1:42);
lam3=sqrt(sum((chazhi./thetazhen).^2))%%%%%%參數估計平方相對偏差
lam4=sqrt(sum(chazhi.^2)/sum(thetazhen.^2))%%%%%%%%%參數估計平方根偏差
Kzhen=(1+0.5)/(1-1.5+0.7);
lam5=sqrt(abs(lam2-Kzhen)/Kzhen)%%%%%%%%%靜態增益估計相對偏差
a02=a0;a12=a1;a22=a2;
a01=(a02*a02-a22*a22)/a02;
a11=(a02*a12-a22*a12)/a02;
a00=(a01*a01-a11*a11)/a01;
b02=b0;b12=b1;b22=b2;
b11=
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????418613??2011-10-18?15:57??實驗二報告.docx
?????文件???????3310??2011-04-26?21:04??main2.m
-----------?---------??----------?-----??----
???????????????421923????????????????????2
- 上一篇:Matlab有限元編程源代碼.rar
- 下一篇:局部線性嵌入LLE的matlab代碼
評論
共有 條評論