系统辨识作业汇总 下载本文

内容发布更新时间 : 2024/5/18 15:14:19星期一 下面是文章的全部内容请认真阅读。

系统建模方法大作业

1.考虑如下系统

y(k)?1.5y(k?1)?0.7y(k?2)?u(k?3)?0.5u(k?4)??(k)

式中,?(k)为白噪声。

取初值P(0)?106I,??(0)?0。分别选择M序列和方差为1的正态分布白噪声作为输入信号u(k),采用递推最小二乘算法进行参数估计,迭代L=400步停止计算。

要求 i) 给出基本迭代公式; ii) 画出程序流程框图;

iii) 画出输入输出数据曲线、参数估计曲线、误差曲线; 提示:

产生长度为L方差为1的正态分布白噪声,相应的MATLAB命令为 randn(L,1)。

k1?p0*h*[h*p0*h?1]?1(1)z(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-3)+0.5*u(k-4) h1=[-z(k-1),-z(k-2),u(k-3),u(k-4)] c1=c0+k1*[z(k)-h1'*c0] (2)

z(k)

给M序列的长度L和移位寄存器的输入赋初

第四个移位寄存器的输出取反,并将幅值变为0.03得到辨识系统的输入信号

画出辨识的输入信号曲线

产生输出采样信

给被辨识参数?和P赋初 计算K(k)

计算?(k)

计算P(k)

计算被辨识参数的相对变化量 满足迭代次数?

Y

分离参

画出被辨识参数c的各次递推估计值

画出被辨识参数c的相对误差的 停图 最小二乘递推算法辨识的Malab程序流程图

(3)1.当输入为M序列时

L=15; % M序列的周期

y1=1;y2=1;y3=1;y4=0; %四个移位寄存器的输出初始值 for i=1:L; %开始循环,长度为L

x1=xor(y3,y4); %第一个移位寄存器的输入是第三个与第四个移位寄存器的输出的

x2=y1; %第二个移位寄存器的输入是第一个移位寄存器的输出 x3=y2; %第三个移位寄存器的输入是第二个移位寄存器的输出 x4=y3; %第四个移位寄存器的输入是第三个移位寄存器的输出

y(i)=y4; %取出第四个移位寄存器的幅值为\和\的输出信号,即M序列 if y(i)>0.5,u(i)=-0.03; %如果M序列的值为\辨识的输入信号取“-0.03” else u(i)=0.03; %如果M序列的值为\辨识的输入信号取“0.03” end %小循环结束

y1=x1;y2=x2;y3=x3;y4=x4; %为下一次的输入信号做准备 end %大循环结束,产生输入信号u figure(1); %第一个图形 title('输入M序列') %图形标题

stem(u),grid on %显示出输入信号径线图并给图形加上网格 z(4)=0;z(3)=0;z(2)=0;z(1)=0; %设z的前四个初始值为零 for k=5:15; %循环变量从3到15

z(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-3)+0.5*u(k-4); %输出采样信号 end

%RLS递推最小二乘辨识

c0=[0.001 0.001 0.001 0.001]'; %直接给出被辨识参数的初始值,即一个充分小的实向量

p0=10^6*eye(4,4); %直接给出初始状态P0,即一个充分大的实数单位矩阵

E=0.000000005; %取相对误差E=0.000000005

c=[c0,zeros(4,14)]; %被辨识参数矩阵的初始值及大小 e=zeros(4,15);

for(n=1:400); %迭代次数 for k=5:15; %开始求K h1=[-z(k-1),-z(k-2),u(k-3),u(k-4)]'; x=h1'*p0*h1+1;

x1=inv(x); %开始求K(k) k1=p0*h1*x1; %求出K的值

d1=z(k)-h1'*c0; c1=c0+k1*d1; %求被辨识参数c e1=c1-c0; %求参数当前值与上一次的值的差值