系统辨识大作业——递推增广最小二乘法。
题目一: 已知一系统为两输入单输出系统,观测数据受有色噪声污染,噪信比为n/s=0.1。
系统经2000次采样,存放于文件中。系统输入u1为7级m序列,u2为u1的63步移位序列。模型类可选为:
a(q-1)y(k)=b1(q)u1(k)+ b2(q)u2(k)+w(k)/c(q-1)。要求编制程序,辨识出该模型的结构及参数。(注:
可以将模型变形,以适合算法)
作业文档要求:
描述问题;选择辨识方法并简单说明所选方法中的结构辨识原理和参数估计原理;
程序流程图及程序清单;
说明程序中用到的一些技术,如数据标准化、ud分解、稳定性判断等;
结构搜索路线及各结构下的参数、残差;
给出最终结果:a(q-1)=
b1(q)=
b2(q)=
c(q-1)=
并给出选择此最终结果的理由;
用你的辨识结果来预报系统输出误差e(k)=y(k)- k),并画出e(101)-e(400)的曲线图。
1.问题描述。
已知一系统为两输入单输出系统,观测数据受有色噪声污染,噪信比为n/s=0.1。系统经2000次采样,存放于文件中。
系统输入u1为7级m序列,u2为u1的63步移位序列。模型类可选为:a(q-1)y(k)=b(q-1)u1(k)+ c(q-1)u2(k)+ d(q-1)w(k)《把题目所选模型a(q-1)y(k)=b1(q)u1(k)+ b2(q)u2(k)+w(k)/c(q-1)转化为问题描述的模型》。
2. 辨识原理和参数估计原理。
2.1递推增广最小二乘法的辨识原理。
递推增广最小二乘法(简称rels方法)是用于控制系统参数估计和结构辩识的一种方法,它基于岱( 最小二乘) 方法,使被控对象数学模型在误差信号平方和最小的意义上由实验数据拟合,同时把有色噪声看成是由白噪声合成的, 从而解决了最小二乘法算法的有偏性和非一致性问题。
其中n=0;n任意时是广义递推最小二乘法就是递推增广最小二乘法。
2.3 结构辨识。
在系统辨识中,系统的阶次是一个十分重要的参数,但在实际的情况中往往无法提前获知系统的阶数。这就需要在参数辨识之前先通过结构辨识,来确定阶数。一般来说经典的结构辨识方法主要有以下3种:
f检验定阶法,aic准则法,fpe准则法。
1)f检验定阶法。
假设系统的阶次为(),计算出模型输出和观测输出的残差平方和函数。
其中为观测输出,为模型输出。
一般来说会随着模型阶次的增加而减少。实际进行系统辨识时,输入输出的信号采样的个数大大超过待辨识的参数个数,在这种情况下,随着模型阶次的增加值先是显著下降,当模型的阶次大于真实系统的阶次时,的显著下降现象就中止。利用这个原理可以判定模型应有的阶次。
2)aic准则法。
赤池信息量准则,即akaike information criterion、简称aic,是衡量统计模型拟合优良性的一种标准,是由日本统计学家赤池弘次创立和发展的。赤池信息量准则建立在熵的概念基础上,可以权衡所估计模型的复杂度和此模型拟合数据的优良性。
在一般的情况下,aic可以表示为:
其中:是参数的数量,是似然函数。
假设条件是模型的误差服从独立正态分布。设为观察数,rss为剩余平方和,那么aic变为:增加自由参数的数目提高了拟合的优良性,aic鼓励数据拟合的优良性但是尽量避免出现过度拟合(overfitting)的情况。
所以优先考虑的模型应是aic值最小的那一个。赤池信息准则的方法是寻找可以最好地解释数据但包含最少自由参数的模型。
3)fpe准则法。
对ar模型的一种定阶法。设是平稳ar(p)序列,是样本,是样本自协方差函数, (j=1,2,…,n)是拟合ar(n)参数的最小二乘估计。
为最终预报误差。使fpe(n)达到最小的n称为ar(p)模型阶数p的估计。此方法是赤池弘次于2024年提出的所谓改进的残差方差图方法。
最终预报误差准则名称的**是对ar(p)序列观测值拟合k阶ar模型,使得一步预报均方误差达到最小,只有k取真阶p才能达到。所以定阶依据这种准则是合乎实际目的的。
3 程序流程图。
3.1 结构辨识结果。
在参数辨识之前首先进行结构辨识,使用f检验法。取最后200个数据计算残差平方和函数值。具体数值如表1所示。
系统模型为。模型阶次每增加1,待辨识参数数目就增加4。查询f分布表可知。
观察表1中t的值,当阶次为4时,,当阶次为5时,。根据f检验法的思想,在模型阶次为5时,残差平方函数值显著下降的现象中止,所以实际系统的阶次为5。
3.2 程序流程图及程序清单。
模型完成定阶以后,就开始参数的辨识。由于系统的阶次为5,所以模型的递推表达式可以写成。
**程序的流程图如图1所示。
递推增广最小二乘法的辨识程序如下:
递推增广最小二乘法。
clearl = 2000;
n = 5;
size = 5+4*(n-1);
v = sqrt(0.1)*randn(2000,1);
m = load(''
z(:,1) =m(1:l,1);
u1(:,1) =m(:,2);
u2(:,1) =m(:,3);
递推增广最小二乘法。
c0=0.0001*ones(size,1);%直接给出被辨识参数的初始值,即一个充分小的实向量。
p0=1000000*eye(size,size);%直接给出初始状态p0,即一个充分大的实数单位矩阵。
e=0.00005;%取相对误差e
c=[c0,zeros(size,l-1)];被辨识参数矩阵的初始值及大小。
e=zeros(size,l);%相对误差的初始值及大小。
zm = zeros(l,1);
ek = zeros(l,1);
for k=6:l; %开始求k
h1=[-z(k-1,1),-z(k-2,1),-z(k-3,1),-z(k-4,1),-z(k-5,1),u1(k-1,1),u1(k-2,1),u1(k-3,1),u1(k-4,1),u1(k-5,1),u2(k-1,1),u2(k-2,1),u2(k-3,1),u2(k-4,1),u2(k-5,1),v(k),v(k-1),v(k-2),v(k-3),v(k-4),v(k-5)]'为求k(k)作准备。
x=h1'*p0*h1+1; x1=inv(x); k1=p0*h1*x1; %k
d1=z(k)-h1'*c0; c1=c0+k1*d1;%辨识参数c
e1=c1-c0;
e2=e1./c0; %求参数的相对变化。
e(:,k)=e2;
c0=c1;%给下一次用。
c(:,k)=c1;%把辨识参数c 列向量加入辨识参数矩阵
p1=p0-k1*k1'*[h1'*p0*h1+1];
%p1=p0-k1*h1'*p0;
p0=p1;%给下次用
end%循环结束。
for k =6:l
h2=[-zm(k-1,1),-zm(k-2,1),-zm(k-3,1),-zm(k-4,1),-zm(k-5,1),u1(k-1,1),u1(k-2,1),u1(k-3,1),u1(k-4,1),u1(k-5,1),u2(k-1,1),u2(k-2,1),u2(k-3,1),u2(k-4,1),u2(k-5,1),v(k),v(k-1),v(k-2),v(k-3),v(k-4),v(k-5)]'
zm(k) =h2'*c(:,l);
ek(k,1) =z(k,1) -zm(k);
endj = ek'*ek;
j,c(:,l)%显示被辨识参数及参数收敛情况。
figure(1);
k =1:l;
plot(k,z,'r',k,zm,'b');
xlabel('k');ylabel('幅值');title('观测输出与模型输出');
figure(2);
k=101:400;
plot(k,ek(101:400,1),'b');
xlabel('k');ylabel('幅值');title('残差');
a1 = c(1,:)a2 = c(2,:)a3 = c(3,:)a4 = c(4,:)a5 = c(5,:)
figure(3);
subplot(3,1,1);
k = 1: l;
plot(k,a1(1,1:l),'b');
xlabel('k');ylabel('幅值');title('a1');
subplot(3,1,2);
k = 1: l;
plot(k,a2(1,1:l),'b');
xlabel('k');ylabel('幅值');title('a2');
subplot(3,1,3);
k = 1: l;
plot(k,a3(1,1:l),'b');
xlabel('k');ylabel('幅值');title('a3');
figure(4);
subplot(2,1,1);
k = 1: l;
plot(k,a4(1,1:l),'b');
xlabel('k');ylabel('幅值');title('a4');
subplot(2,1,2);
k = 1: l;
plot(k,a5(1,1:l),'b');
xlabel('k');ylabel('幅值');title('a5');
b1 = c(6,:)b2 = c(7,:)b3 = c(8,:)b4 = c(9,:)b5 = c(10,:)
figure(5);
subplot(3,1,1);
k = 1: l;
plot(k,b1(1,1:l),'b');
xlabel('k');ylabel('幅值');title('b1');
subplot(3,1,2);
k = 1: l;
plot(k,b2(1,1:l),'b');
xlabel('k');ylabel('幅值');title('b2');
subplot(3,1,3);
k = 1: l;
plot(k,b3(1,1:l),'b');
xlabel('k');ylabel('幅值');title('b3');
figure(6);
subplot(2,1,1);
k = 1: l;
plot(k,b4(1,1:l),'b');
系统辨识大作业
系统辨识。大作业。1.考虑如下系统。式中,为白噪声。取初值,分别选择m序列和方差为1的正态分布白噪声作为输入信号,采用递推最小二乘算法进行参数估计,迭代l 400步停止计算。要求。i 给出基本迭代公式 ii 画出程序流程框图 iii 画出输入输出数据曲线 参数估计曲线 误差曲线 提示 产生长度为l方...
系统辨识大作业
第一题 输入 x 1.01 2.03 3.02 4.01 5 6.02 7.03 8.04 9.03 10 y 9.6 4.1 1.3 0.4 0.05 0.1 0.7 1.7 3.8 9.1 用cftool工具箱拟合 linear model poly2 f x p1 x 2 p2 x p3 co...
系统辨识大作业
专业班级 自动化09 3 学号 09051325 姓名 吴恩。设某物理量与满足关系式,实验获得一批数据如下表,试辨识模型参数。15分 解答 问题描述 由题意知,这是一个已知模型为y ax2 bx c,给出了10组实验输入输出数据,要求对模型参数a,b,c进行辨识。问题求解 这里对该模型参数辨识采用最...