预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共13页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

系统辨识练习题 方法一:%递推最小二乘参数估计(RLS) clearall;closeall; a=[1-1.50.7]';b=[10.5]';d=3;%对象参数 na=length(a)-1;nb=length(b)-1;%na、nb为A、B阶次 L=480;%仿真长度 uk=zeros(d+nb,1);%输入初值:uk(i)表示u(k-i) yk=zeros(na,1);%输出初值 u=randn(L,1);%输入采用白噪声序列xi=sqrt(O.1)*randn (L,1);%白噪声序列 theta=[a(2:na+1);b];%对象参数真值 thetae_仁zeros(na+nb+1,1);%thetae初值 P=10A6*eye(na+nb+1); fork=1:L phi=[-yk;uk(d:d+nb)];%此处phi为列向量 y(k)=phi'*theta+xi(k);%采集输出数据 %递推最小二乘法 K=P*phi/(1+phi'*P*phi); thetae(:,k)=thetae_1+K*(y(k)-phi'*thetae_1); P=(eye(na+nb+1)-K*phi')*P; %更新数据 thetae_1=thetae(:,k); fori=d+nb:-1:2 uk(i)=uk(i-1); end uk(1)=u(k); fori=na:-1:2 yk(i)=yk(i-1); end yk(1)=y(k); end plot([1:L],thetae);%line([1,L],[theta,theta]);xlabel('k');ylabel('参 数估计a、b'); legend('a_1','a_2','b_0','b_1');axis([0L-22]); 方法三:%遗忘因子递推最小二乘参数估计(FFRLS) clearall;closeall; a=[1-1.50.7]';b=[10.5]';d=3;%对象参数 na=length(a)-1;nb=length(b)-1;%na、nb为A、B阶次 L=1000;%仿真长度 uk=zeros(d+nb,1);%输入初值:uk(i)表示u(k-i)yk=zeros(na,1);%输出初值 u=randn(L,1);%输入采用白噪声序列xi=sqrt(O.1)*randn(L,1);%白噪声序列 thetae_仁zeros(na+nb+1,1);%thetae初值 P=10A6*eye(na+nb+1); lambda=0.98;%遗忘因子范围[0.91] fork=1:L ifk==501 a=[1-10.4]';b=[1.50.2]';%对象参数突变 end theta(:,k)=[a(2:na+1);b];%对象参数真值 phi=[-yk;uk(d:d+nb)]; y(k)=phi'*theta(:,k)+xi(k);%采集输出数据 %遗忘因子递推最小二乘法 K=P*phi/(lambda+phi'*P*phi); thetae(:,k)=thetae_1+K*(y(k)-phi'*thetae_1); P=(eye(na+nb+1)-K*phi')*P/lambda; %更新数据 thetae_仁thetae(:,k); fori=d+nb:-1:2 uk(i)=uk(i-1); end uk(1)=u(k); fori=na:-1:2 yk(i)=yk(i-1); end yk(1)=y(k); end subplot(1,2,1) plot([1:L],thetae(1:na,:));holdon;plot([1:L],theta(1:na,:),'k:');xlabel('k');ylabel('参数 估计a'); legend('a_1','a_2');axis([0L-22]); subplot(1,2,2) plot([1:L],thetae(na+1:na+nb+1,:));holdon;plot([1:L],theta(na+1:na+nb+1,:),'k:'); xlabel('k');ylabel('参数估计b'); legend('b_0','b_1');axis([0L-0.52]); 方法四:%递推极大似然参数估计〔RML〕 clearall;closeall; a=[1-1.50.7]';b=[10.5]';c=[1-0.5]';d=1;%对象参数 na=length(a)-1;nb=length(b)-1;nc=length(c)-1;%na、nb、nc为A、B、C阶次 nn=max(na,nc);