系统辨识作业汇总
系统建模方法大作业 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 P 赋初 计算 K K(k) 计算(k) 计算 P 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; %取出第四个移位寄存器的幅值为“0“和“1“的输出信号,即 M 序列 if y(i)0.5,u(i)=-0.03; %如果 M 序列的值为“1“, 辨识的输入信号取 “-0.03” else u(i)=0.03; %如果 M 序列的值为“0“, 辨识的输入信号取“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; %求参数当前值与上一次的值的差值 e2=e1./c0; %求参数的相对变化 e(:,k)=e2; %把当前相对变化的列向量加入误差矩阵的最后一列 c0=c1; %新获得的参数作为下一次递推的旧参数 c(:,k)=c1; %把辨识参数 c 列向量加入辨识参数矩阵的最后一列 p1=p0-k1*k1 *[h1 *p0*h1+1]; %求出 p(k)的值 p0=p1; %给下次用 %如果参数收敛情况满足要求,终止计算 end %小循环结束 end %大循环结束 c,e %显示被辨识参数及其误差(收敛)情况 %分离参数 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:15; %横坐标从 1 到 15 plot(i,a1, r ,i,a2, : ,i,b1, g ,i,b2, : ) %画出 a1,a2,b1,b2 的各次 辨识结果 title( 递推最小二乘参数辨识 ) %图形标题 figure(3); %第三个图形 i=1:15; %横坐标从 1 到 15 plot(i,ea1, r ,i,ea2, g ,i,eb1, b ,i,eb2, r: ) %画出 a1,a2,b1,b2 的 各次辨识结果的收敛情况 title( 辨识精度 ) %图形标题 辨识曲线图: 2 当输入为随机正态分布时 u=randn(L,1); %产生随机正态分布白噪声 figure(1); %第一个图形 title( 输入正态分布白噪声 ) %图形标题 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.00