用matlab实现最小二乘递推算法辨识系统参数
系统辨识最小二乘Matlab仿真
系统辨识和最小二乘参数估计Matlab仿真一、系统辨识在控制系统的分析中,首先要建立系统的数学模型,控制系统的数学模型是定量描述系统或过程内部物理量(或变量)之间关系的数学表达式。
一般来说,建立控制系统数学模型有两种基本方法:(1)机理建模(白箱模型):即根据系统内在运行机制、物料和能量守恒等物理学、化学规律建立系统的数学模型,一般步骤如下:Step1:根据系统工作原理及其在控制系统中的作用,确定输入和输出;Step2:根据物料和能量守恒等关系列写基本方程式;Step3:消去中间量;Step4:获得系统模型;(2)实验法建模(黑箱模型):即对于机理尚不清楚或机理过于复杂的系统,可以人为的对其施加某种测试信号,并记录其输出响应,或者记录正常运行时的输入输出数据,然后利用这些输入输出数据确定系统模型结构和参数。
多年来,系统辨识已经发展为一门独立学科分支,通过系统辨识建立一个对象的数学模型,通常包括两方面的工作:一是模型结构的确定(模型的类型、阶次),二是模型参数估计。
根据时间是否连续,参数模型又可以分为连续时间系统模型和离散时间系统参数模型,这两类模型均可采用输入输出模型和状态空间模型描述,离散系统采用差分方程描述,以单输入单输出(SISO)离散系统参数模型为例。
1.确定性模型SISO系统确定性模型可表示为:u(k)和y(k)分别为输入和输出,d为纯延时。
2.随机性模型如果受到随机扰动,则式子可写为:为系统随机扰动,其结构如图:系统辨识的一般步骤如图:从图中可以看出,利用辨识的方法建立系统数学模型,从实验设计到模型获得,需要这些步骤。
二、最小二乘参数估计1.批处理最小二乘考虑以下CAR模型:为白噪声,结构参数na、nb和d已知,参数估计的任务就是根据可测量的输入输出,确定如下参数:仿真实例:式中,为方差为1的白噪声,选用幅值为1的逆M序列作为输入,LS算法进行参数估计,仿真结果如图:仿真程序(Matlab):%批处理最小二乘参数估计(LS)clear all;a=[1 -1.5 0.7]'; b=[1 0.5]'; d=3; %对象参数na=length(a)-1; nb=length(b)-1; %na、nb为A、B阶次L=500; %数据长度uk=zeros(d+nb,1); %输入初值:uk(i)表示u(k-i)yk=zeros(na,1); %输出初值x1=1; x2=1; x3=1; x4=0; S=1; %移位寄存器初值、方波初值xi=randn(L,1); %白噪声序列theta=[a(2:na+1);b]; %对象参数真值for k=1:Lphi(k,:)=[-yk;uk(d:d+nb)]'; %此处phi(k,:)为行向量,便于组成phi矩阵y(k)=phi(k,:)*theta+xi(k); %采集输出数据IM=xor(S,x4); %产生逆M序列if IM==0u(k)=-1;elseu(k)=1;endS=not(S); M=xor(x3,x4); %产生M序列%更新数据x4=x3; x3=x2; x2=x1; x1=M;for i=d+nb:-1:2uk(i)=uk(i-1);enduk(1)=u(k);for i=na:-1:2yk(i)=yk(i-1);endyk(1)=y(k);endthetae=inv(phi'*phi)*phi'*y' %计算参数估计值thetae2.递推最小二乘在批处理最小二乘法时,由于每次处理的数据量较大,而且常常要求对象参数能够在线实时估计,解决的方法就是将其化成递推算法,其基本思想为:算法介绍:仿真实例:式中,为方差为0.1的白噪声,取初值,选择方差为1的白噪声作为输入信号u(k),采用RLS算法进行参数估计,仿真结果如图:仿真程序(Matlab):%递推最小二乘参数估计(RLS)clear all; close all;a=[1 -1.5 0.7]'; b=[1 0.5]'; d=3; %对象参数na=length(a)-1; nb=length(b)-1; %na、nb为A、B阶次L=400; %仿真长度uk=zeros(d+nb,1); %输入初值:uk(i)表示u(k-i)yk=zeros(na,1); %输出初值u=randn(L,1); %输入采用白噪声序列xi=sqrt(0.1)*randn(L,1); %白噪声序列theta=[a(2:na+1);b]; %对象参数真值thetae_1=zeros(na+nb+1,1); %thetae初值P=10^6*eye(na+nb+1);for k=1:Lphi=[-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);for i=d+nb:-1:2uk(i)=uk(i-1);enduk(1)=u(k);for i=na:-1:2yk(i)=yk(i-1);endyk(1)=y(k);endplot([1:L],thetae); %line([1,L],[theta,theta]); xlabel('k'); ylabel('参数估计a、b');legend('a_1','a_2','b_0','b_1'); axis([0 L -2 2]);。
利用Matlab进行系统辨识的技术方法
利用Matlab进行系统辨识的技术方法在Matlab中进行系统辨识的技术方法主要有参数估计法和非参数估计法两种。
1.参数估计法:参数估计法是通过拟合已知输入和输出数据的数学模型来估计系统的参数。
常用的参数估计方法包括最小二乘法(OLS)、最小二乘法(LSE)、最小二乘法(MLE)和极大似然估计法(MLE)等。
a) 最小二乘法(OLS):OLS方法通过最小化实际输出与模型预测输出之间的误差平方和来估计系统参数。
在Matlab中,可以使用lsqcurvefit函数来实现最小二乘法的系统辨识。
b) 最小二乘法(LSE):LSE方法是通过最小化实际输出与模型预测输出之间的误差平方和来估计系统参数。
在Matlab中,可以使用lsqnonlin函数来实现最小二乘法的系统辨识。
c) 最小二乘法(MLE):MLE方法是通过最大化似然函数来估计系统参数。
在Matlab中,可以使用mle函数来实现最大似然估计法的系统辨识。
2.非参数估计法:非参数估计法不需要事先指定系统的数学模型,而是直接根据输入和输出数据的统计特性进行系统辨识。
常用的非参数估计方法包括频域方法、时域方法和时频域方法等。
a) 频域方法:频域方法通过对输入和输出数据进行频谱分析来估计系统的频率响应。
常用的频域方法包括傅里叶变换、功率谱密度估计和频率响应函数估计等。
在Matlab中,可以使用fft函数和pwelch函数来实现频域方法的系统辨识。
b) 时域方法:时域方法通过对输入和输出数据进行时间序列分析来估计系统的时域特性。
常用的时域方法包括自相关函数估计和互相关函数估计等。
在Matlab中,可以使用xcorr函数来实现时域方法的系统辨识。
c) 时频域方法:时频域方法结合了频域方法和时域方法的优势,可以同时估计系统的频率响应和时域特性。
常用的时频域方法包括短时傅里叶变换和小波变换等。
在Matlab中,可以使用spectrogram函数和cwt函数来实现时频域方法的系统辨识。
基于MATLAB的递推最小二乘法辨识与仿真_强明辉
基于MATLAB的递推最小二乘法辨识与仿真强明辉 ,张京娥(兰州理工大学电气工程与信息工程学院 甘肃兰州,730050)摘 要: 通过对最小二乘算法的分析,推导出了递推最小二乘法的运算公式,提出了基于MATLAB /Simulink的使用递推最小二乘法进行参数辨识的设计与仿真方法。
并采用Simulink建立系统的仿真对象模型和运用MATLAB的S-函数编写最小二乘递推算法,结合实例给出相应的仿真结果和分析。
仿真结果表明,该仿真方法克服了传统编程语言仿真时繁杂、难度高、周期长的缺点,是一种简单、有效的最小二乘法的编程仿真方法。
关键词: Matlab;Simulink;参数辨识;递推最小二乘法;仿真Abstract: This paper based on the analysis of least-squares algorithm derived a RLS of calculation formula and proposed based on MATLAB/Simulink the use of RLS to identify the parameters of design and simulation methods. Adopt the simulation model with MATLAB /Simulink and the method using S-function in MATLAB to design the algorithm of RLS. According to an given example, the simulation and results are analyzed. The simulation results show that the method can overcome such disadvan-tages as properties of complexity, diffculty and lengthiness in the traditionalmethod of using program language. By using this method, the dynamic system simulation becomes easy, visual and quick. So it is a simple and effective method of least squares programming Simulation.Key words: Matlab; Simulink; Parameter identification; RLS; Simulation中图分类号:TP271+.7 文献标识码:A 文章编号:1001-9227(2008)06-0004-030 引 言最小二乘法首先是由Gauss为进行行星轨道预测的研究而提出的,现在最小二乘法已经成为用于系统参数估计的主要方法之一。
Matlab最小二乘系统辨识
Matlab最⼩⼆乘系统辨识原理还是⽐较简单的,不赘述,程序⾥⾯的注释也写的⽐较清楚了%仿真对象:y(k)-1.5y(k-1)+0.7y(k-2)=v(k)+u(k)-0.8u(k-1)%辨识模型:y(k)+a1 y(k-1)+a2 y(k-2)=v(k)+b1 u(k)+b2 u(k-1)%数据长度取n=20000,加权矩阵为I,v(k)是服从正态分布的⽩噪声N(0,1),u(k)=sin(k)%待估计参数K=[a1 a2 a3 a4]';准则函数J(K)=(Yn-HnK)'(Yn-HnK);%将辨识模型写为:y(k)=v(k)+a1 y(k-1)+a2 y(k-2)+b1 u(k)+b2 u(k-1)% =v(k)+KHn%Hn=|y(2) y(1)|% |y(3) y(2)|% |.........|clearclose alldata_length=20002;%% 产⽣⽩噪声和输⼊v=randn(1,data_length);v=v./max(v);u=zeros(1,data_length);for k=1:data_lengthu(k)=sin(k);end%% 获得观测值y=zeros(1,data_length);for k=3:data_lengthy(k)=1.5*y(k-1)-0.7*y(k-2)+v(k)+u(k)-0.8*u(k-1);end%% 构造Hn和Y矩阵Hn=zeros(data_length-2,2);count=1;for k=1:10000Hn(k,2)=y(count);count=count+1;Hn(k,1)=y(count);Hn(k,4)=u(count);Hn(k,3)=u(count+1);end%% 求解参数Y=y(3:data_length)';c1=Hn'*Hn;c2=inv(c1);c3=Hn'*Y;K=c2*c3%% 将辨识得到的参数代⼊,得估计输出y_e=zeros(1,data_length);for k=3:data_lengthy_e(k)=K(1)*y_e(k-1)+K(2)*y_e(k-2)+v(k)+K(3)*u(k)+K(4)*u(k-1);end%% 画出实际输出和辨识输出,进⾏对⽐plot((1:data_length),y');title('实际输出')hold onplot((1:data_length),y_e');title('辨识输出')figuresubplot(2,1,1)plot((1:data_length),y');title('实际输出')subplot(2,1,2)plot((1:data_length),y_e');title('辨识输出')。
系统辨识最小二乘参数估计matlab
最小二乘参数估计摘要:最小二乘的一次性完成辨识算法(也称批处理算法),他的特点是直接利用已经获得的所有(一批)观测数据进行运算处理。
这种算法在使用时,占用内存大,离线辨识,观测被辨识对象获得的新数据往往是逐次补充到观测数据集合中去的。
在应用一次完成算法时,如果要求在每次新增观测数据后,接着就估计出系统模型的参数,则需要每次新增数据后要重新求解矩阵方程()Z l T l l Tl ΦΦΦ-∧=1θ。
最小二乘辩识方法在系统辩识领域中先应用上已相当普及,方法上相当完善,可以有效的用于系统的状态估计,参数估计以及自适应控制及其他方面。
关键词:最小二乘(Least-squares ),系统辨识(System Identification ) 目录:1.目的 (1)2.设备 (1)3引言 (1)3.1 课题背景 (1)4数学模型的结构辨识 (2)5 程序 (3)5.1 M 序列子函数 ................................................................................... 错误!未定义书签。
5.2主程序................................................................................................. 错误!未定义书签。
6实验结果: ................................................................................................................................... 3 7参考文献: ................................................................................................... 错误!未定义书签。
matlab基于最小二乘、全局化算法、遗传算法的参数识别
最小二乘法:%递推公式,更新 p0=p2;for n=2:N-1%%递推最小二乘法K0=p0*X(n,:)'*inv(1+X(n,:)*p0*X(n,:)');%计算KTheta_abs=Theta_abs+K0*(Y(n)-X(n,:)*Theta_abs);%计算估计值Theta ;p3=p0-K0*X(n,:)*p0;%计算P p0=p3;%误差平方和最小 Y1=X(n,:)*Theta_abs;%递推值 J=(Y(n,:)-Y1)*(Y(n,:)-Y1)'if (J<err)%设定平方误差最小,跳出循环 break; end; end对于()()()()()b n a n n k u b k u b n y a k y a k y b a -++=-+-+.......111 引进后移算子()()11-=-k y k y q 假定在初始条件0时z 变换得到()()()ab b n a n n n z a z a z b z b b z X z Y z H ----+++++==...1 (11110)ARX 模型有:()()⎪⎩⎪⎨⎧++=+++=------b b a n n n a n zb z b b q B za z a q A (11)101111 ()()()()()k v k u q B q k y q A d +=---11;()k v 为均值为0的噪声项 上式可以改写为()()()()l k k v i k u b i k z a k z ban i i n i i ,..,2,1,11=+-+--=∑∑==上式改写为最小二乘格式()())(k v k h k z T +=θ(3) 对于(3)式的l次观测构成一个线性方程组[][]⎪⎩⎪⎨⎧=------=Tn n Tba na b b b a a a n k u k u n k z k z k h ,...,,,,...,,)(),...,1(),(),...,1()(2121θ即 l l l V H Z +=θ.()()()[]()()()[]Tl Tl l v v v V l z z z Z ,...2,1,,...,2,1=()()()()()()()()()⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-------------=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=)()1()(21)2()1(10)1(021b a b a b a l n l u l u n l z l z n u u n z z n u u n z z l h h h H取极小化准则函数()()[]()()θθθL T L l lk T H z H z k h k z J --=-=∑=12,极小化()θJ ,求得参数θ的估计值θˆ,[]T n n na b b b a a a ˆ,...,ˆ,ˆ,ˆ,...,ˆ,ˆˆ2121=θ ()()[]()()θθθˆˆˆ12ll T l l lk T H Z H Z k h k z J --=-=∑=表示为了确定使准则最小的条件,将该式对各参数求导,并令其结果等于零:()()l T l lT l l l l Z H H H H Z H J 1ˆ,0ˆ2ˆ-==--=∂∂θθθ即,只要矩阵l H 是满秩的,l Tl H H 则是正定的,使准则为极小的条件得到满足,最小二乘估计的递推算法(RLS )最小二乘法,不仅占用大量内存,而且不适合于在线辨识,为了解决这个问题,把它转化为递推算法:修正项+=+kk θθˆˆ1 ()()()()()()()()()⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-------------=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=)()1()(21)2()1(10)1(021b a b a b a l n l u l u n l z l z n u u n z z n u u n z z l h h h H若令()1-=l T l l H H P ,则[][]l T l l T l l l l l T l l l P h Ph h I h P P h h P P 111111111+-+++-++++-=+=[][]lT l l l l l Tl l l l l T l l l l l P h K I P h P h h P K h z K 111111111111;1;ˆˆ++++++++++++-=+=-+=θθθ加权递推最小二乘(RWLS ):()()()()(),11k e k u z B k z z A +=--()()()(),11k v zC zD k e --=e(k)为有色噪声,v(k)为白噪声。
matlab基于某最小二乘、全局化算法、遗传算法地全参数识别
最小二乘法:%递推公式,更新 p0=p2;for n=2:N-1%%递推最小二乘法K0=p0*X(n,:)'*inv(1+X(n,:)*p0*X(n,:)');%计算KTheta_abs=Theta_abs+K0*(Y(n)-X(n,:)*Theta_abs);%计算估计值Theta ; p3=p0-K0*X(n,:)*p0;%计算P p0=p3;%误差平方和最小Y1=X(n,:)*Theta_abs;%递推值 J=(Y(n,:)-Y1)*(Y(n,:)-Y1)'if (J<err)%设定平方误差最小,跳出循环 break; end; end对于()()()()()b n a n n k u b k u b n y a k y a k y b a -++=-+-+.......111 引进后移算子()()11-=-k y k y q 假定在初始条件0时z 变换得到()()()ab b n a n n n z a z a z b z b b z X z Y z H ----+++++==...1 (11110)ARX 模型有:()()⎪⎩⎪⎨⎧++=+++=------b b a n n n a n zb z b b q B za z a q A (11)101111 ()()()()()k v k u q B q k y q A d +=---11;()k v 为均值为0的噪声项上式可以改写为()()()()l k k v i k u b i k z a k z ban i i n i i ,..,2,1,11=+-+--=∑∑==上式改写为最小二乘格式()())(k v k h k z T +=θ(3) 对于(3)式的l次观测构成一个线性方程组[][]⎪⎩⎪⎨⎧=------=Tn n Tba na b b b a a a n k u k u n k z k z k h ,...,,,,...,,)(),...,1(),(),...,1()(2121θ即 l l l V H Z +=θ.()()()[]()()()[]T l T l l v v v V l z z z Z ,...2,1,,...,2,1=()()()()()()()()()⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-------------=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=)()1()(21)2()1(10)1(021b a b a b a l n l u l u n l z l z n u u n z z n u u n z z l h h h H K K K K K K M 取极小化准则函数()()[]()()θθθL T L l lk T H z H z k h k z J --=-=∑=12,极小化()θJ ,求得参数θ的估计值θˆ,[]T n n na b b b a a a ˆ,...,ˆ,ˆ,ˆ,...,ˆ,ˆˆ2121=θ ()()[]()()θθθˆˆˆ12ll T l l lk T H Z H Z k h k z J --=-=∑=表示为了确定使准则最小的条件,将该式对各参数求导,并令其结果等于零:()()l T l lT l l l l Z H H H H Z H J 1ˆ,0ˆ2ˆ-==--=∂∂θθθ即,只要矩阵l H 是满秩的,l Tl H H 则是正定的,使准则为极小的条件得到满足,最小二乘估计的递推算法(RLS )最小二乘法,不仅占用大量内存,而且不适合于在线辨识,为了解决这个问题,把它转化为递推算法:修正项+=+kk θθˆˆ1 ()()()()()()()()()⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-------------=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=)()1()(21)2()1(10)1(021b a b a b a l n l u l u n l z l z n u u n z z n u u n z z l h h h H K K K K K K M若令()1-=l T l l H H P ,则[][]l T l l T l l l l l T l l l P h Ph h I h P P h h P P 111111111+-+++-++++-=+=[][]lT l l l l l T l l l l l T l l l l l P h K I P h P h h P K h z K 111111111111;1;ˆˆ++++++++++++-=+=-+=θθθ加权递推最小二乘(RWLS ):()()()()(),11k e k u z B k z z A +=--()()()(),11k v zC zD k e --=e(k)为有色噪声,v(k)为白噪声。
基于MATLAB的最小二乘法参数辨识与仿真_石贤良
展开后可得 z ( k ) = - a1 z ( k - 1 ) - a2 z ( k - 2 ) - . . . - ana z ( k - na ) + b 1u ( k - 1 ) + b2 u ( k - 2 ) + . . . + bnb z ( k - nb ) 模型 ( 1) 可化成最小二乘格式: S z ( k ) = h ( k ) H+ n ( k ) ( 2) S 记 H= [ a 1, a2, . . . a na b 1, b1, . . . , bnb ] 为待估计 的参数。 h( k ) = [ - z ( k - 1 ), . . . , - z ( k - na ), u ( k - 1 ), . . . , u( k - nb ) ] , 对于 k= 1 , 2 , . . . . L ( L 为数 据长度 ) , 方程 ( 2) 构成一个线性方程组, 写成 zL ( k ) = H L ( k ) H+ nL ( k ) z ( 1) ZL = h ( 1)
# 46#
微
处
理
机
2005 年
快速准确地估计出系统参数, 而且在对模型结构或 外部噪声干扰发生较大变化的情况下 , 也能获得较 好的辨识结果。在参数辨识仿真过程中 , 可根据实 验要求, 使用 M 语言编程不同的算法, 方便简捷。
表 1 最小二乘递推算法的辨识结果 ( N iose pow er= 0. 1) 参数 真值 估计值 图 3 被封装的最小二乘递推算法函数 a1 1. 5 1. 5004 a2 1 1. 003 a3 b1 b2 0 . 5 - 1. 5 - 0. 5 0. 5002 - 1. 498 - 0. 5001
基于matlab的最小二乘法仿真
基于Matlab的最小二乘法的仿真摘要:任何待研究的对象都可以看成是一个系统。
系统的数学模型是系统本质特征的数学抽象,是建立系统状态参数之间以及与外作用之间最主要的相互作用、相互制约的数学表达式。
系统辨识是研究建立系统数学模型的理论与方法它研究的领域非常广阔,包括自动控制、航天、航空、天文学、海洋、医学、生物学、生态学以及省会经济学等众多领域。
本文主要介绍了系统辨识中最经典的数据处理方法最小二乘法,并将matlab用在最小二乘法的数据处理中。
The Simulation Of Least Square Method Using Matlab关键字:最小二乘法 matlabAbstract:the object of study for any can be as a system. Themathematical model of the system is the system of mathematics abstract nature, it is to establish the system state between the parameters of the function and between the most main, the interaction between a restraint mathematical expressions.System identification is research to establish a system of mathematical model theory and method of the field of study it is very wide, including automatic control, aerospace, aviation,astronomy, Marine, medicine, biology, ecology and provincial capital economics, etc. This paper mainly introduces the identification of the most classic of system data processing method, and the least square method with matlab in least square method of data processing.Key word:Least square method matlab引言最小二乘法是一种以选用误差平方和最小为准则,来最佳拟合出符合实验数据约最优参数估计的数学方法。
matlab递推最小二乘法函数
一、介绍在数学和工程领域中,最小二乘法是一种常见的参数估计方法,用于寻找一组参数使得观测数据和模型预测值之间的误差最小。
而在matlab中,递推最小二乘法函数是指使用递推方式来实现最小二乘法计算的函数。
本文将介绍matlab中如何编写递推最小二乘法函数,并对其原理和应用进行详细讲解。
二、递推最小二乘法的原理递推最小二乘法是一种迭代方法,通过不断更新参数来逼近最优解。
其原理可以简单描述为以下几个步骤:1. 初始化参数:首先需要初始化参数向量,通常可以使用随机数或者某些先验知识来确定初始参数值。
2. 迭代更新:接下来进入迭代更新阶段,根据当前参数值和观测数据,更新参数向量以降低误差。
3. 判断停止条件:迭代更新的过程中需要设立停止条件,当满足某个条件时停止迭代,可以是达到一定的迭代次数或者参数变化小于某个阈值等。
三、matlab编写递推最小二乘法函数在matlab中,编写递推最小二乘法函数可以通过以下步骤实现:1. 编写初始化函数:首先需要编写一个初始化函数来初始化参数向量,该函数可以接受观测数据和模型的输入,并返回初始参数向量。
2. 编写更新函数:接下来需要编写一个更新函数来进行参数的迭代更新,该函数也可以接受观测数据和当前参数向量的输入,并返回更新后的参数向量。
3. 编写停止条件函数:最后需要编写一个停止条件函数来判断迭代是否应该停止,该函数可以接受当前参数向量和更新前的参数向量的输入,并返回是否停止的逻辑值。
四、matlab递推最小二乘法函数的应用递推最小二乘法函数在matlab中的应用非常广泛,特别是在参数估计、信号处理、系统识别等领域。
通过使用递推最小二乘法函数,可以快速准确地估计出模型参数,从而提高算法的精度和效率。
由于递推最小二乘法具有较好的收敛性和稳定性,因此在实际工程中也得到了广泛的应用。
五、总结通过本文的介绍,读者可以了解到matlab中递推最小二乘法函数的编写和应用。
递推最小二乘法作为一种迭代方法,能够快速准确地估计出模型参数,并在各种工程领域中得到了广泛的应用。
最小二乘法MATLAB程序及结果
最小二乘递推算法的MATLAB仿真针对辨识模型,有z(k)-+a1*z(k-1)+a2*z(k-2)=b1*u(k-1)+b2*u(k-2)+v(k)模型结构,对其进行最小二乘递推算法的MATLAB仿真,对比真值与估计值。
更改a1、a2、b1、b2参数,观察结果。
仿真对象:z(k)-1.5*z(k-1)+0.7*z(k-2)=u(k-1)+0.5*u(k-2)+v(k)程序如下:L=15;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; %取出作为输出信号,即M序列if y(i)>0.5,u(i)=-0.03; %输入信号else u(i)=0.03;endy1=x1;y2=x2;y3=x3;y4=x4;endfigure(1);stem(u),grid onz(2)=0;z(1)=0;for k=3:15;z(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2); %输出采样信号endc0=[0.001 0.001 0.001 0.001]'; %直接给出被识别参数的初始值p0=10^6*eye(4,4); %直接给出初始状态P0E=0.000000005;c=[c0,zeros(4,14)];e=zeros(4,15);for k=3:15; %开始求kh1=[-z(k-1),-z(k-2),u(k-1),u(k-2)]';x=h1'*p0*h1+1;x1=inv(x);k1=p0*h1*x1; %开始求k的值d1=z(k)-h1'*c0;c1=c0+k1*d1;e1=c1-c0;e2=e1./c0; %求参数的相对变化e(:,k)=e2;c0=c1;c(:,k)=c1;p1=p0-k1*k1'*[h1'*p0*h1+1]; %求出P(k)的值p0=p1;if e2<=E break;endendc,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;plot(i,a1,'r',i,a2,':',i,b1,'g',i,b2,':')title('Parameter Identification with Recursive Least Squares Method')figure(3);i=1:15;plot(i,ea1,'r',i,ea2,'g',i,eb1,'b',i,eb2,'r:')title('Identification Precision')程序运行结果:p0 =1000000 0 0 00 1000000 0 00 0 1000000 00 0 0 1000000c =Columns 1 through 90.0010 0 0.0010 -0.4984 -1.2325 -1.4951 -1.4962 -1.4991 -1.49980.0001 0 0.0001 0.0001 -0.2358 0.6912 0.6941 0.6990 0.69980.0010 0 0.2509 1.2497 1.0665 1.0017 1.0020 1.0002 0.99990.0010 0 -0.2489 0.7500 0.5668 0.5020 0.5016 0.5008 0.5002Columns 10 through 15-1.4999 -1.5000 -1.5000 -1.5000 -1.4999 -1.49990.6999 0.7000 0.7000 0.7000 0.7000 0.70000.9998 0.9999 0.9999 0.9999 0.9999 0.99990.5002 0.5000 0.5000 0.5000 0.5000 0.5000e =1.0e+003 *Columns 1 through 90 0 0 -0.4994 0.0015 0.0002 0.0000 0.0000 0.00000 0 0 0 -2.3592 -0.0039 0.0000 0.0000 0.00000 0 0.2499 0.0040 -0.0001 -0.0001 0.0000 -0.0000 -0.00000 0 -0.2499 -0.0040 -0.0002 -0.0001 -0.0000 -0.0000 -0.0000Columns 10 through 150.0000 0.0000 0.0000 -0.0000 -0.0000 0.00000.0000 0.0000 -0.0000 0.0000 0.0000 0.0000-0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000-0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000程序运行曲线:图1.输入信号图2.a1,a2,b1,b2辨识仿真结果图3. a1,a2,b1,b2各次辨识结果收敛情况分析:由运行结果可看出,输出观测值没有任何噪声成分时,辨识结果最大相对误差达到3位数。
最小二乘参数辨识的matlab仿真程序注释与剖析
最小二乘一次完成算法的MATLAB 仿真 例2-1 考虑仿真对象)()2(5.0)1()2(7.0)1(5.1)(k v k u k u k z k z k z +-+-=-+-- (2-1)其中,)(k v 是服从正态分布的白噪声N )1,0(。
输入信号采用4阶M 序列,幅度为1。
选择如下形式的辨识模型)()2()1()2()1()(2121k v k u b k u b k z a k z a k z +-+-=-+-+ (2-2)设输入信号的取值是从k =1到k =16的M 序列,则待辨识参数LS θˆ为:LSθˆ=L τL 1L τL z H )H H -( (2-3)其中,被辨识参数LSθˆ、观测矩阵z L 、H L 的表达式为 ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=2121ˆb b a a LSθ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=)16()4()3(z z z L z ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡------=)14()2()1()15()3()2()14()2()1()15()3()2(u u u u u u z z z z z z L H(2-4)例2-1程序框图如图2.1所示:例2-1Matlab仿真程序如下:%二阶系统的最小二乘一次完成算法辨识程序,文件名:FLch3LSeg1.mu=[-1,1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,1,1]; %系统辨识的输入信号为一个周期的M序列z=zeros(1,16); %定义输出观测值的长度for k=3:16z(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2); %用理想输出值作为观测值endsubplot(3,1,1) %画三行一列图形窗口中的第一个图形stem(u) %画输入信号u的径线图形subplot(3,1,2) %画三行一列图形窗口中的第二个图形i=1:1:16; %横坐标范围是1到16,步长为1plot(i,z) %图形的横坐标是采样时刻i, 纵坐标是输出观测值z, 图形格式为连续曲线subplot(3,1,3) %画三行一列图形窗口中的第三个图形stem(z),grid on %画出输出观测值z的径线图形,并显示坐标网格u,z %显示输入信号和输出观测信号%L=14 %数据长度HL=[-z(2) -z(1) u(2) u(1);-z(3) -z(2) u(3) u(2);-z(4) -z(3) u(4) u(3);-z(5) -z(4) u(5) u(4);-z(6) -z(5) u(6) u(5);-z(7) -z(6) u(7) u(6);-z(8) -z(7) u(8) u(7);-z(9) -z(8) u(9)u(8);-z(10) -z(9) u(10) u(9);-z(11) -z(10) u(11) u(10);-z(12) -z(11) u(12) u(11);-z(13) -z(12) u(13) u(12);-z(14) -z(13) u(14) u(13);-z(15) -z(14) u(15) u(14)] %给样本矩阵H L赋值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)] % 给样本矩阵z L赋值%Calculating Parametersc1=HL'*HL; c2=inv(c1); c3=HL'*ZL; c=c2*c3 %计算并显示θˆLS%Display Parametersa1=c(1), a2=c(2), b1=c(3),b2=c(4) %从θˆ中分离出并显示a1、a2、b1、b2LS%End例2-1程序运行结果:u =[ -1,1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,1,1]z =[ 0,0,0.5000,0.2500,0.5250,2.1125, 4.3012,6.4731,6.1988,3.2670,-0.9386, -3.1949,-4.6352,6.2165,-5.5800,-2.5185] HL =1.0000-1.0000-0.5000 0 -1.0000 1.0000 -0.2500 -0.5000 1.0000-1.0000-0.5250 -0.2500 1.0000 1.0000 -2.1125 -0.5250 1.0000 1.0000 -4.3012 -2.1125 1.0000 1.0000 -6.4731-4.3012 -1.0000 1.0000-6.1988-6.4731 -1.0000 -1.0000-3.2670-6.1988 -1.0000 -1.00000.9386-3.2670 1.0000 -1.00003.19490.9386 -1.0000 1.00004.63523.1949 -1.0000 -1.00006.21654.6352 1.0000 -1.00005.58006.2165 1.0000 1.0000(14*4)ZL =[ 0.5000,0.2500,0.5250,2.1125,4.3012,6.4731,6.1988,3.2670,-0.9386,-3.1949, -4.6352,-6.2165,-5.5800,-2.5185]T (14*1)c =[ -1.5000,0.7000,1.0000,0.5000]Ta1 = -1.5000 a2 = 0.7000 b1 = 1.0000 b2 =0.5000-101-10010-10010对比:)()2(5.0)1()2(7.0)1(5.1)(k v k u k u k z k z k z +-+-=-+-- (2-1) 可以看出,由于所用的输出观测值没有任何噪声成分,所以辨识结果无任何误差。
基于MATLAB的递推最小二乘法辨识与仿真
基于MATLAB的递推最小二乘法辨识与仿真强明辉 ,张京娥(兰州理工大学电气工程与信息工程学院 甘肃兰州,730050)摘 要: 通过对最小二乘算法的分析,推导出了递推最小二乘法的运算公式,提出了基于MATLAB /Simulink的使用递推最小二乘法进行参数辨识的设计与仿真方法。
并采用Simulink建立系统的仿真对象模型和运用MATLAB的S-函数编写最小二乘递推算法,结合实例给出相应的仿真结果和分析。
仿真结果表明,该仿真方法克服了传统编程语言仿真时繁杂、难度高、周期长的缺点,是一种简单、有效的最小二乘法的编程仿真方法。
关键词: Matlab;Simulink;参数辨识;递推最小二乘法;仿真Abstract: This paper based on the analysis of least-squares algorithm derived a RLS of calculation formula and proposed based on MATLAB/Simulink the use of RLS to identify the parameters of design and simulation methods. Adopt the simulation model with MATLAB /Simulink and the method using S-function in MATLAB to design the algorithm of RLS. According to an given example, the simulation and results are analyzed. The simulation results show that the method can overcome such disadvan-tages as properties of complexity, diffculty and lengthiness in the traditionalmethod of using program language. By using this method, the dynamic system simulation becomes easy, visual and quick. So it is a simple and effective method of least squares programming Simulation.Key words: Matlab; Simulink; Parameter identification; RLS; Simulation中图分类号:TP271+.7 文献标识码:A 文章编号:1001-9227(2008)06-0004-030 引 言最小二乘法首先是由Gauss为进行行星轨道预测的研究而提出的,现在最小二乘法已经成为用于系统参数估计的主要方法之一。
参数估计的递归最小二乘法matlab程序
参数估计的递归最小二乘法matlab程序
下面是一个用于参数估计的递归最小二乘法的Matlab程序:
```matlab
function [theta_hat, P] = recursive_least_squares(y, u) N = length(y); % 数据点个数
lambda = 0.99; % 遗忘系数
P = eye(length(u)); % 初始化P矩阵
theta_hat = zeros(length(u), 1); % 初始化参数向量
for k = 1:N
phi = u(k,:)'; % 转置u(k)为列向量
epsilon = y(k) - phi' * theta_hat; % 残差
K = (P * phi) / (lambda + phi' * P * phi); % 计算增益
theta_hat = theta_hat + K * epsilon; % 更新参数向量
P = (eye(length(u)) - K * phi') * P / lambda; % 更新协方差矩阵
end
end
```
该程序实现了递归最小二乘法(RLS)用于参数估计。
其中`y`是输入信号,`u`是扰动信号。
函数计算得到的`theta_hat`是参数向量的估计值,`P`是参数估计的协方差矩阵。
请注意,本程序仅供参考,并不保证其完整性和正确性。
使用时请自行验证和调整代码。
(完整版)系统全参数辨识matlab实现
实用标准文案4. 设某物理量Y 与X 满足关系式Y=aX 2+bX+c ,实验获得一批数据如下表,试辨识模型参数a ,b 和c 。
(50分)报告要求:要有问题描述、参数估计原理、程序流程图、程序清单,最后给出结果及分析。
(1)问题描述:由题意知,这是一个已知模型为Y=aX 2+bX+c ,给出了10组实验输入输出数据,要求对模型参数a ,b ,c 进行辨识。
这里对该模型参数辨识采用递推最小二乘法。
(2)参数估计原理对该模型参数辨识采用递推最小二乘法,即RLS ( recurisive least square ),它是一种能够对模型参数进行在线实时估计的辨识方法。
其基本思想可以概括为:新的估计值)(ˆk θ=旧的估计值)1(ˆ-k θ+修正项 下面将批处理最小二乘法改写为递推形式即递推最小二乘参数估计的计算方法。
批处理最小二乘估计θˆ为Y T TΦΦΦ=-1)(ˆθ,设k 时刻的批处理最小二乘估计为:k T k k T k Y ΦΦΦ=-1)(ˆθ令111)]1()()1([)()(----+-=ΦΦ=k k k P k P T kT k ϕϕ K 时刻的最小二乘估计可以表示为kT k Y k P k Φ=)()(ˆθ=)]()()[(11k y k Y k P k T k ϕ+Φ-- =)]1(ˆ)()()[()1(ˆ--+-k k k y k K kT θϕθ ;式中)()()(k k P k K ϕ=,因为要推导出P(k)和K(k)的递推方程,因此这里介绍一下矩阵求逆引理:设A 、(A+BC )和(I +B CA 1-)均为非奇异方阵,则111111)()(------+-=+CA B CA I B A A BC A 通过运用矩(3)程序流程图(如右图1所示)递推最小二乘法(RLS)步骤如下:已知:n、b n和d。
aStep 1 :设置初值)0(ˆθ和P(0),输入初始数据;Step2 :采样当前输出y(k)、和输入u(k)Step3 :利用上面式①②③计算)(k K、)(ˆkθ和)(k P;Step4 :k→k+1,返回step2,继续循环。
rls算法matlab代码
rls算法matlab代码RLS(递推最小二乘法)是一种常用的算法,用于估计系统的状态和参数。
Matlab是一款广泛应用于数值计算和算法实现的软件,其中提供了RLS算法的实现代码。
本篇文章将向您介绍如何使用Matlab实现RLS算法。
一、算法概述RLS算法是一种递推最小二乘法,用于在线估计系统的状态和参数。
它通过迭代的方式,利用历史数据来估计当前时刻的状态和参数。
算法的核心思想是利用历史数据来拟合系统模型,并不断更新模型的参数,以达到更好的估计效果。
二、Matlab代码实现下面是一个简单的Matlab代码实现示例,用于演示如何使用Matlab实现RLS算法。
```matlab%初始化参数n=100;%数据点数dt=0.1;%时间间隔M=10;%滤波器阶数w=randn(M,1);%噪声系数h=randn(M,1);%系统模型系数alpha=randn(M,1);%RLS滤波器系数theta=zeros(M,1);%系统参数R=randn(n,M);%输入输出数据矩阵x=zeros(n,1);%状态变量y=zeros(n,1);%输出变量%RLS滤波器更新过程fork=2:nx(k)=x(k-1)+dt*h*theta(M-1);%系统状态转移y(k)=R(k,M)*theta(M-1)+w(M)+alpha(M-1);%输出数据z=R(k,1:M-1)*theta(M-1);%RLS滤波器输入数据alpha(k)=(z'*z-R(k,k))\(z'*y(k));%RLS滤波器更新系数theta(M-1)=y(k)-z*theta(k);%系统参数更新theta=theta/sum(theta);%归一化系统参数向量end```上述代码中,我们首先初始化了一些参数,包括数据点数、时间间隔、滤波器阶数、噪声系数、系统模型系数、RLS滤波器系数、系统参数向量和输入输出数据矩阵等。
然后,我们使用RLS滤波器更新过程来估计系统参数。
系统辩识实验报告
一、实验目的1. 理解系统辨识的基本概念和原理。
2. 掌握递推最小二乘算法在系统辨识中的应用。
3. 通过实验,验证算法的有效性,并分析参数估计误差。
二、实验原理系统辨识是利用系统输入输出数据,对系统模型进行估计和识别的过程。
在本实验中,我们采用递推最小二乘算法对系统进行辨识。
递推最小二乘算法是一种参数估计方法,其基本思想是利用当前观测值对系统参数进行修正,使参数估计值与实际值之间的误差最小。
递推最小二乘算法具有计算简单、收敛速度快等优点。
三、实验设备1. 电脑一台,装有MATLAB软件。
2. 系统辨识实验模块。
四、实验步骤1. 打开MATLAB软件,运行系统辨识实验模块。
2. 在模块中输入已知的系数a1、a2、b1、b2。
3. 生成输入序列u(t)和噪声序列v(t)。
4. 将输入序列u(t)和噪声序列v(t)加入系统,产生输出序列y(t)。
5. 利用递推最小二乘算法对系统参数进行辨识。
6. 将得到的参数估计值代入公式计算参数估计误差。
7. 仿真出参数估计误差随时间的变化曲线。
五、实验结果与分析1. 实验结果根据实验步骤,我们得到了参数估计值和参数估计误差随时间的变化曲线。
2. 结果分析(1)参数估计值:通过递推最小二乘算法,我们得到了系统参数的估计值。
这些估计值与实际参数存在一定的误差,这是由于噪声和系统模型的不确定性所导致的。
(2)参数估计误差:从参数估计误差随时间的变化曲线可以看出,递推最小二乘算法在短时间内就能使参数估计误差达到较低水平。
这说明递推最小二乘算法具有较好的收敛性能。
(3)参数估计误差曲线:在实验过程中,我们发现参数估计误差曲线在初期变化较快,随后逐渐趋于平稳。
这表明系统辨识过程在初期具有较高的灵敏度,但随着时间的推移,参数估计误差逐渐减小,系统辨识过程逐渐稳定。
六、实验结论1. 递推最小二乘算法在系统辨识中具有较好的收敛性能,能够快速、准确地估计系统参数。
2. 实验结果表明,递推最小二乘算法能够有效减小参数估计误差,提高系统辨识精度。
递推最小二乘法的Matlab程序
递推最⼩⼆乘法的Matlab程序clear %清理⼯作间变量L=502; % M序列的周期y1=1;y2=1;y3=1;y4=0; %四个移位寄存器的输出初始值for i=1:L;%开始循环,长度为Lx1=xor(y3,y4); %第⼀个移位寄存器的输⼊是第三个与第四个移位寄存器的输出的“或”x2=y1; %第⼆个移位寄存器的输⼊是第⼀个移位寄存器的输出x3=y2; %第三个移位寄存器的输⼊是第⼆个移位寄存器的输出x4=y3; %第四个移位寄存器的输⼊是第三个移位寄存器的输出y(i)=y4; %取出第四个移位寄存器的幅值为"0"和"1"的输出信号,即M序列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 %⼤循环结束,产⽣输⼊信号uz(2)=0;z(1)=0; %设z的前两个初始值为零randn('seed',0)a=0.1*randn(L,1);for k=3:L; %循环变量从3到15z(k)=1*z(k-1)-0.632*z(k-2)+0.638*u(k-1)+0.264*u(k-2); %输出采样信号endc0=[0.001 0.001 0.001 0.001]'; %直接给出被辨识参数的初始值,即⼀个充分⼩的实向量p0=10^6*eye(4,4); %直接给出初始状态P0,即⼀个充分⼤的实数单位矩阵E=0.000000005; %取相对误差E=0.000000005c=[c0,zeros(4,15)]; %被辨识参数矩阵的初始值及⼤⼩e=zeros(4,L); %相对误差的初始值及⼤⼩for k=3:L; %开始求Kh1=[-z(k-1),-z(k-2),u(k-1),u(k-2)]'; x=h1'*p0*h1+1; x1=inv(x); %开始求K(k)k1=p0*h1*x1;%求出K的值d1=z(k)-h1'*c0; c1=c0+k1*d1; %求被辨识参数ce1=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; %给下次⽤if e2<=E break; %如果参数收敛情况满⾜要求,终⽌计算end %⼩循环结束end %⼤循环结束c%分离参数a1=c(1,:); a2=c(2,:); b1=c(3,:); b2=c(4,:);[N,M]=size(c);figure(1); %第⼆个图形i=1:M; %横坐标从1到15plot(i,a1,'r',i,a2,':',i,b1,'g',i,b2,':') %画出a1,a2,b1,b2的各次辨识结果title('Parameter Identification with Recursive Least Squares Method') %图形标题gtext('\leftarrowa1')gtext('\leftarrowa2')gtext('\downarrowb1')gtext('\uparrowb2')。
用matlab实现最小二乘递推算法辨识系统参数
用matlab实现最小二乘递推算法辨识系统参数自动化系统仿真实验室指导教师:学生姓名班级计082-2 班学号撰写时间:全文结束》》-3-1 成绩评定:一.设计目的1、学会用Matlab实现最小二乘法辨识系统参数。
2、进一步熟悉Matlab的界面及基本操作;3、了解并掌握Matlab中一些函数的作用与使用;二.设计要求最小二乘递推算法辨识系统参数,利用matlab编程实现,设初始参数为零。
z(k)-1、5*z(k-1)+0、7*z(k-2)=1*u(k-1)+0、5*u(k-2)+v(k); 选择如下形式的辨识模型:z(k)+a1*z(k-1)+a2*z(k-2)=b1*u(k-1)+b2*u(k-2)+v(k);三.实验程序m=3;N=100;uk=rand(1,N);for i=1:Nuk(i)=uk(i)*(-1)^(i-1);endyk=zeros(1,N); for k=3:N yk(k)=1、5*yk(k-1)-0、7*yk(k-2)+uk(k-1)+0、5*uk(k-2);end%j=100;kn=0;%y=yk(m:j);%psi=[yk(m-1:j-1);yk(m-2:j-2);uk(m-1:j-1);uk(m-2:j-2)];%pn=inv(psi*psi);%theta=(inv(psi*psi)*psi*y);theta=[0 ;0;0;0];pn=10^6*eye(4);for t=3:Nps=([yk(t-1);yk(t-2);uk(t-1);uk(t-2)]);pn=pn-pn*ps*ps*pn*(inv(1+ps*pn*ps));theta=theta+pn*ps*(yk(t)-ps*theta);thet=theta;a1=thet(1);a2=thet(2);b1=thet(3);b2= thet(4);a1t(t)=a1;a2t(t)=a2;b1t(t)=b1;b2t(t)=b2;endt=1:N;plot(t,a 1t(t),t,a2t(t),t,b1t(t),t,b2t(t));text(20,1、47,a1);text(20,-0、67,a2);text(20,0、97,b1);text(20,0、47,b2);四.设计实验结果及分析实验结果图:仿真结果表明,大约递推到第步时,参数辨识的结果基本到稳态状态,即a1=1、5999,b1=1,c1=0、5,d1=-0、7。
matlab基于最小二乘、全局化算法、遗传算法的参数识别
最小二乘法:%递推公式,更新 p0=p2;for n=2:N-1%%递推最小二乘法K0=p0*X(n,:)'*inv(1+X(n,:)*p0*X(n,:)');%计算KTheta_abs=Theta_abs+K0*(Y(n)-X(n,:)*Theta_abs);%计算估计值Theta ;p3=p0-K0*X(n,:)*p0;%计算P p0=p3;%误差平方和最小 Y1=X(n,:)*Theta_abs;%递推值 J=(Y(n,:)-Y1)*(Y(n,:)-Y1)'if (J<err)%设定平方误差最小,跳出循环 break; end; end对于()()()()()b n a n n k u b k u b n y a k y a k y b a -++=-+-+.......111 引进后移算子()()11-=-k y k y q 假定在初始条件0时z 变换得到()()()ab b n a n n n z a z a z b z b b z X z Y z H ----+++++==...1 (11110)ARX 模型有:()()⎪⎩⎪⎨⎧++=+++=------b b a n n n a n zb z b b q B za z a q A (11)101111 ()()()()()k v k u q B q k y q A d +=---11;()k v 为均值为0的噪声项 上式可以改写为()()()()l k k v i k u b i k z a k z ban i i n i i ,..,2,1,11=+-+--=∑∑==上式改写为最小二乘格式()())(k v k h k z T +=θ(3) 对于(3)式的l次观测构成一个线性方程组[][]⎪⎩⎪⎨⎧=------=Tn n Tba na b b b a a a n k u k u n k z k z k h ,...,,,,...,,)(),...,1(),(),...,1()(2121θ即 l l l V H Z +=θ.()()()[]()()()[]Tl Tl l v v v V l z z z Z ,...2,1,,...,2,1=()()()()()()()()()⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-------------=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=)()1()(21)2()1(10)1(021b a b a b a l n l u l u n l z l z n u u n z z n u u n z z l h h h H取极小化准则函数()()[]()()θθθL T L l lk T H z H z k h k z J --=-=∑=12,极小化()θJ ,求得参数θ的估计值θˆ,[]T n n na b b b a a a ˆ,...,ˆ,ˆ,ˆ,...,ˆ,ˆˆ2121=θ ()()[]()()θθθˆˆˆ12ll T l l lk T H Z H Z k h k z J --=-=∑=表示为了确定使准则最小的条件,将该式对各参数求导,并令其结果等于零:()()l T l lT l l l l Z H H H H Z H J 1ˆ,0ˆ2ˆ-==--=∂∂θθθ即,只要矩阵l H 是满秩的,l Tl H H 则是正定的,使准则为极小的条件得到满足,最小二乘估计的递推算法(RLS )最小二乘法,不仅占用大量内存,而且不适合于在线辨识,为了解决这个问题,把它转化为递推算法:修正项+=+kk θθˆˆ1 ()()()()()()()()()⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-------------=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=)()1()(21)2()1(10)1(021b a b a b a l n l u l u n l z l z n u u n z z n u u n z z l h h h H若令()1-=l T l l H H P ,则[][]l T l l T l l l l l T l l l P h Ph h I h P P h h P P 111111111+-+++-++++-=+=[][]lT l l l l l Tl l l l l T l l l l l P h K I P h P h h P K h z K 111111111111;1;ˆˆ++++++++++++-=+=-+=θθθ加权递推最小二乘(RWLS ):()()()()(),11k e k u z B k z z A +=--()()()(),11k v zC zD k e --=e(k)为有色噪声,v(k)为白噪声。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用matlab实现最小二乘递推算法辨识系统参
数
自动化系统仿真实验室指导教师:
学生姓名班级计082-2 班学号撰写时间:
全文结束》》-3-1 成绩评定:
一.设计目的
1、学会用Matlab实现最小二乘法辨识系统参数。
2、进一步熟悉Matlab的界面及基本操作;
3、了解并掌握Matlab中一些函数的作用与使用;二.设计要求最小二乘递推算法辨识系统参数,利用matlab编程实现,设初始参数为零。
z(k)-1、5*z(k-1)+0、7*z(k-2)=1*u(k-1)+0、5*u(k-2)+v(k); 选择如下形式的辨识模型:z(k)+a1*z(k-
1)+a2*z(k-2)=b1*u(k-1)+b2*u(k-2)+v(k);三.实验程序
m=3;N=100;uk=rand(1,N);for i=1:Nuk(i)=uk(i)*(-1)^(i-1);endyk=zeros(1,N); for k=3:N yk(k)=1、5*yk(k-1)-0、
7*yk(k-2)+uk(k-1)+0、5*uk(k-2);
end%j=100;kn=0;%y=yk(m:j);%psi=[yk(m-1:j-1);yk(m-2:j-2);uk(m-1:j-1);uk(m-2:j-
2)];%pn=inv(psi*psi);%theta=(inv(psi*psi)*psi*y);theta=[0 ;0;0;0];pn=10^6*eye(4);for t=3:Nps=([yk(t-1);yk(t-
2);uk(t-1);uk(t-2)]);pn=pn-
pn*ps*ps*pn*(inv(1+ps*pn*ps));theta=theta+pn*ps*(yk(t)-ps*theta);thet=theta;a1=thet(1);a2=thet(2);b1=thet(3);b2= thet(4);
a1t(t)=a1;a2t(t)=a2;b1t(t)=b1;b2t(t)=b2;endt=1:N;plot(t,a 1t(t),t,a2t(t),t,b1t(t),t,b2t(t));text(20,1、
47,a1);text(20,-0、67,a2);text(20,0、97,b1);text(20,0、47,b2);四.设计实验结果及分析实验结果图:仿真结果表明,大约递推到第步时,参数辨识的结果基本到稳态状态,即a1=1、5999,b1=1,c1=0、5,d1=-0、7。
五、设计感受这周的课程设计告一段落了,时间短暂,意义重大。
通过这次次练习的机会,重新把matlab课本看了一遍,另外学习了系统辨识的有关内容,收获颇丰。
对matlab的使用更加纯熟,也锻炼了自己在课本中搜索信息和知识的能力。
在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。
同时我也进一步认识了matlab软件强大的功能。
在以后的学习和工作中必定有很大的用处。