最小二乘参数辨识方法及应用程序清单

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第3章最小二乘参数辨识方法及应用程序清单

一、3.2.2节利用最小二乘法求取模型参数的程序

二、3.3 加权最小二乘算法

程序3:最小二乘参数辨识程序

clear all%清理工作间变量

close all%关闭所有图形

clc%清屏

z(1)=440,z(2)=430,z(3)=420,z(4)=380,z(5)=370,z(6)=360,z(7)=320,z(8)=310,z(9)=300,z(10)=260,z(11)=250,z(12 )=240,z(13)=220,z(14)=210,z(15)=170,z(16)=160;

u(1)=3,u(2)=2.7,u(3)=2.4,u(4)=2.1,u(5)=2.0,u(6)=1.9,u(7)=1.6,u(8)=1.54,u(9)=1.48,u(10)=1.2,u(11)=1.14,u(12)=1 .08,u(13)=0.95,u(14)=0.9,u(15)=0.7,u(16)=0.6;

HL=[-z(1) u(1);-z(2) u(2);-z(3) u(3);-z(4) u(4);-z(5) u(5);-z(6) u(6); -z(7) u(7); -z(8) u(8);-z(9) u(9); -z(10) u(10);-z(11) u(11);-z(12) u(12);-z(13) u(13);-z(14) u(14)] %给样本矩阵HL赋值

ZL=[z(3);z(4);z(5);z(6);z(7);z(8);z(9);z(10);z(11);z(12);z(13);z(14);z(15);z(16)]% 给样本矩阵zL赋值

%calculating parameters%计算参数

c1=HL'*HL; c2=inv(c1); c3=HL'*ZL; c=c2*c3 %计算并显示

%DISPLAY PARAMETERS

a2=c(1), b2=c(2)

三、3.4 递推最小二乘算法

程序4:递推最小二乘参数辨识程序

clear all%清理工作间变量

close all%关闭所有图形

clc%清屏

%%%%%%%%%%%%%%%%%%%%%%%%%% 产生白噪声的程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%

A=6;

x0=1;M=255;

for k=1:10000

x2=A*x0;

x1=mod (x2,M);

v1=x1/256;

v(:,k)=(v1-0.5)*2;

x0=x1;

v0=v1;

end

num=v;

k1=k;

% num=zeros(1,1000);

% randn('seed',100);

% num=randn(1,1000);

% 白噪声程序结束%%%%%%%

%%%%%% M序列产生程序%%%L=15;% M序列的周期

y1=1;y2=1;y3=1;y4=0;%四个移位积存器的输出初始值

for i=1:L;%开始循环,长度为L

x1=xor(y3,y4);%第一个移位积存器的输入是第3个与第4个移位积存器的输出的“或”

x2=y1;%第二个移位积存器的输入是第3个移位积存器的输出

x3=y2;%第三个移位积存器的输入是第2个移位积存器的输出

x4=y3;%第四个移位积存器的输入是第3个移位积存器的输出

y(i)=y4;%取出第四个移位积存器幅值为"0"和"1"的输出信号,

if y(i)>0.5,u(i)=-1;%如果M序列的值为"1"时,辨识的输入信号取“-0.03”

else u(i)=1;%当M序列的值为"0"时,辨识的输入信号取“0.03”

end%小循环结束

y1=x1;y2=x2;y3=x3;y4=x4;%为下一次的输入信号做准备

end%大循环结束,产生输入信号u

figure(1);%第1个图形

stem(u),grid on%以径的形式显示出输入信号并给图形加上网格

%%%% M序列产生程序程序结束%%%

%%%% 递推最小二乘辨识程序%%%%%

lamt=1;

z(2)=0;z(1)=0;%取z的前两个初始值为零

for k=3:15;%循环变量从3到15

z(k)=-1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2)+0*num(1,k);%给出理想的辨识输出采样信号

end

%RLS递推最小二乘辨识

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

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

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

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

e=zeros(4,15);%相对误差的初始值及大小

for k=3:15; %开始求K

h1=[-z(k-1),-z(k-2),u(k-1),u(k-2)]';

x=h1'*p0*h1+1*lamt;

x1=inv(x); %开始求K(k)

k1=p0*h1*x1;%求出K的值

d1=z(k)-h1'*c0;

c1=c0+k1*d1;%求被辨识参数c

% p1=p0-k1*k1'*(h1'*p0*h1+1);%求出p(k)的值

p1=1/lamt*(eye(4)-k1*h1')*p0;

e1=c1-c0;%求参数当前值与上一次的值的差值

e2=e1./c0;%求参数的相对变化

e(:,k)=e2; %把当前相对变化的列向量加入误差矩阵的最后一列

c(:,k)=c1;%把辨识参数c 列向量加入辨识参数矩阵的最后一列

c0=c1;%新获得的参数作为下一次递推的旧参数

p0=p1;%给下次用

if e2<=E

break;%若参数收敛满足要求,终止计算

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);%第2个图形

i=1:15;%横坐标从1到15

plot(i,a1,'r',i,a2,'b',i,b1,'k',i,b2,'g') %画出a1,a2,b1,b2的各次辨识结果

title('递推最小二乘参数辨识')%图形标题

figure(3); %第3个图形

i=1:15; %横坐标从1到15

plot(i,ea1,'r',i,ea2,'b',i,eb1,'k',i,eb2,'g') %画出a1,a2,b1,b2的各次辨识结果的收敛情况title('辨识精度') %图形标题

%%% 辨识结果显示程序结束%%

四、3.5 增广最小二乘辨识算法及原理

程序5:增广递推最小二乘参数辨识程序

clear all%清理工作间变量

close all%关闭所有图形

clc%清屏

%%%% M序列、噪声信号产生及其显示程序%%%%

L=60;%四位移位积存器产生的M序列的周期

y1=1;y2=1;y3=1;y4=0;%四个移位积存器的输出初始值

for i=1:L;

x1=xor(y3,y4);%第一个移位积存器的输入信号

x2=y1;%第二个移位积存器的输入信号

x3=y2;%第三个移位积存器的输入信号

x4=y3;%第四个移位积存器的输入信号

y(i)=y4;%第四个移位积存器的输出信号,幅值"0"和"1"

if y(i)>0.5,u(i)=-1;%M序列的值为"1"时,辨识的输入信号取“-1”

else u(i)=1;%M序列的值为"0"时,辨识的输入信号取“1”

end

y1=x1;y2=x2;y3=x3;y4=x4;%为下一次的输入信号作准备

end

figure(1);%画第一个图形

subplot(2,1,1); %画第一个图形的第一个子图

stem(u),grid on%画出M序列输入信号

v=randn(1,60); %产生一组60个正态分布的随机噪声

subplot(2,1,2); %画第一个图形的第二个子图

plot(v),grid on;%画出随机噪声信号

R=corrcoef(u,v);%计算输入信号与随机噪声信号的相关系数

相关文档
最新文档