系统辨识最小二乘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的最小二乘法(一阶)的仿真clcclear% ①白噪声的生成过程如下:e=randn(1,500);e=e/std(e);e=e-mean(e);A=0; %白噪声的均值为0B=sqrt(0.1); %白噪声的方差为0.1e=A+B*e;%绘制白噪声图k=1:500;subplot(4,1,1) %画四行一列图形窗口中的第一个图形plot(k,e,'r');xlabel('k'), ylabel('e');title('(0,1)均匀分布的随机序列')% ②生成M序列的过程如下:X1=1;X2=0;X3=1;X4=0; %移位寄存器输入Xi初始状态(0101),Yi寄存器的各级输出m=500; %M序列的总长度for i=1:mY4=X4; Y3=X3; Y2=X2; Y1=X1;X4=Y3; X3=Y2; X2=Y1;X1=xor(Y3,Y4); %异或运算if Y4==0U(i)=-1;elseU(i)=Y4;endendM=U;u=U;%绘制M序列图¼i1=ik=1:1:i1;subplot(4,1,2) %画四行一列图形窗口中的第二个图形plot(k,U,k,U,'rx')stem(M)xlabel('k')ylabel('M序列')title('移位寄存器产生的M序列')% ③参数估计的过程如下:%绘制参数估计的相关图形z=zeros(1,500); %定义输出观测值的长度for k=2:500z(k)=0.9*z(k-1)+u(k-1)+e(k);%用理想输出值作为观测值endsubplot(4,1,3) %画四行一列图形窗口中的第三个图形i=1:1:500; %横坐标的范围从1到500,步长为1plot(i,z) %图形的横坐标是采样时刻i,纵坐标是输出观测值Z,图形格式为连续曲线subplot(4,1,4) %画四行一列图形窗口中的第四个图形stem(z),grid on%画出输出观测值Z的经线图形,并显示坐标网络u,z %显示输入信号和输出观测信号%给矩阵HL和ZL赋初值HL(:,1)=-z(1,1:499);HL(:,2)=u(1,1:499);ZL(:,1)=z(1,2:500);%计算参数c1=HL'*HL; c2=inv(c1); c3=HL'*ZL; c=c2*c3a1=c(1),b1=c(2) %从中分离出a1¡b1仿真截图仿真结果之一:c=-9.018 a1= b1=1.0108 -9.018 1.0108。
利用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实现最小二乘递推算法辨识系统参数自动化系统仿真实验室指导教师:学生姓名班级计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最⼩⼆乘系统辨识原理还是⽐较简单的,不赘述,程序⾥⾯的注释也写的⽐较清楚了%仿真对象: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('辨识输出')。
机械系统辨识及仿真最小二乘法
作业四宋家亮15030024一、实验题目用MatLAB辨识系统,系统输出分别叠加两种不同类型的噪声,针对每一种情况使用最小二乘整批算法、递推算法和广义最小二乘法实现辨识。
图1 图2二、实验思路及目的对图1、图2分别通过构造的系统给定输入(白噪声和M序列)并叠加噪声(白噪声和有色噪声),测得输出数据并显示,对未知系统定阶并用整批、递推、广义最小二乘算法进行辨识,显示辨识结果;比较三种算法对不同噪声模型的辨识精度(λ取相同的值),显示辨识结果的脉冲响应图像并于理想系统响应对比,对结果给予合理的解释;改变 值(0.01,0.02,0.03等),比较辨识结果的精度,说明信噪比对各种算法辨识精度的影响。
三、实验过程1、设计界面利用guide编辑器针对所要实现的功能添加控件进行界面初步的设计,设计结果如图1.1所示图1.12、设置控件属性对界面的控件设置属性,形成实验所需要的最终界面,如图2.1所示:图2.1其中系统噪声和输入信号设置成可选择的属性,其value值作为后面函数中的控制条件,这个刚开始走了弯路,直接用string属性做控制条件,结果发现根本实现不了,请教大神后选择value值作为控制条件,因为value值默认为1,当通过下拉选项选择下一个信号时其value值会自动加1。
如图2.2所示。
图2.23、设计guide回调函数(1)噪声参数输入的回调函数本实验设计成噪声参数可输入的程序,所以为达到这一目的,添加了参数输入控件,通过如图3.1所示打开回调函数,添加如下程序,可以将输入的容转变成数字用于后续函数的运算。
global zaoshengxishuzaoshengxishu=get(handles.zaoshengxishu,'String'); zaoshengxishu=str2num(zaoshengxishu);%将输入的字符串λ变成数值图3.1(2)开始辨识按钮的回调函数(主体程序)如图3.2打开开始辨识按钮回调函数,添加主程序(见附录),这样通过点击该按钮可实现本实验的所有功能。
基于Matlab系统辨识的参数辨识与仿真
基于Matlab系统辨识的参数辨识与仿真【摘要】论述了系统辨识的基本理论,分别用最小二乘法参数辨识和辅助变量法参数辨识。
根据Matlab系统辨识工具箱中的一些基本函数,结合实例来熟悉基于系统辨识工具箱的建模方法。
【关键词】Matlab;参数辨识;最小二乘法;辅助变量法1.系统辨识的基本理论系统辨识是根据系统的输入输出的时间函数来确定描述系统行为的数学模型,是现代控制理论中的一个分支。
对系统进行分析的主要问题是根据输入时间函数和系统的特性来确定输出信号。
它包括确定系统数学模型结构和估计其参数的方法。
系统辨识的流程如图1所示。
图1 系统辨识过程流程图2.模型参数辨识的方法系统辨识包括模型阶次辨识和参数辨识。
经典参数辨识的方法主要有他包括脉冲响应法、阶跃响应法、频率响应法、最小二乘法、相关分析法、谱分析法和极大似然法等,其中最小二乘法是最基本和最经典的,也是其他方法基本的思想的来源。
比如辅助变量法。
2.1 最小二乘法辨识考虑如下CAR模型:(1)参数估计的任务是根据可测量的输入和输出,确定如下个参数:对象(1)可以写成如下最小二乘形式:(2)现有L组输入输出观测数据:利用最小二乘法得到系统参数的估计值为:(3)2.2 辅助变量法辨识当为有色噪声时,利用最小二乘法进行参数辨识时往往得不到无偏一致的参数估计量。
在这个时候可以引入变量,然后利用最小二乘法进行辨识就可得到无偏一致的参数估计量。
因此,对于线性或本质线性系统,其过程的模型都可以化成最小二乘形式,考虑如下所示的模型方程:(4)将上式写成最小二乘格式,则得:假定存在一个辅助变量矩阵,维数与H相同,它满足以下极限特性:式中Q是非奇异矩阵。
如果辅助变量满足上述条件,则有:(5)图2 系统仿真图3.建模实例3.1 非参数模型辨识某被控对象的数学模型可以表示为:,式中:;为白噪声,编制MATLAB程序,分别对上述对象进行ARX建模和辅助变量法建模,并比较两种方法得到的脉冲响应。
基于MATLAB的广义最小二乘参数辨识与仿真
氐
^
{乞 ,l一
●
:
^
厶
,z+1) 咒+2)
n+N
n= --e(n)
—PQ+1)
--e(n--1) --e(n)
… 一e(咒—,井1)
… 一P瓴—柳+2)
;
i
i
;
一P(咒+N一1) --e(n+N二2) … --e(n+^卜铆)
利用普通最小二乘法计算厂的估值: 尹一(f2也)一1(o)Te 4)计算y(惫)和M(惫):
流程图如下:
I给埘亭列的长度M赋值l
●
J产生所需的输入信号l
I
l产生随机噪声信号I
‘
l画出输入信号径线图彤及随机噪声图形I
●
l产生输出采样信号I
I
区囹 f求出中利用最小_乘法第一次求出8给厂赋初值l
再一次利用残差P用最小_乘法求馄,I ●
l求迭代之后的输入与输出信号I
‘
l计算系统的实际输出响应及模型的响应I
第37卷(2009)第8期
计算机与数字工程
175
l。用广义最小二乘法估计模型参数,选择如下形
式的辨识模型:
y(愚)一口1y(忌一1)一n2y(忌一2)+6l“(忌一1) +62“(忌一2)+e(惫) 由于采用4阶 M序列,所以输入 信号如下:“一idin—
图2系统仿真对象 序列,幅值为1。
put(N1,‘prbs’,[4 1 D;prbs为M序 列,数据长度取为 N1—1023,4阶M
is accurate and SU-
பைடு நூலகம்
perior to LS identification apparently. Key words parameter identification,GLS,simulation
系统辨识最小二乘参数估计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的最小二乘法参数辨识与仿真_石贤良
展开后可得 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仿真
设一非线性系统如下所示:()()()()()111y k y k e u k k βαε--=-+-+0.75α= 0.35β=0.25γ=,()k ε是零均值,方差为0.01的噪声序列(均匀白噪声)。
(1)试设计一种激励信号能持续激励系统的各工作点(平衡点)(2)用适当的方法辨识出系统的等价模型(用另一组数据来检验模型的泛化性) 说明:下面讨论的都是离散系统,所以时间坐标均采用离散时间节点k 。
解:(1) 线性化处理寻找系统的合理输入信号 可以求得系统的平衡点为:()0.75y k α== (1.1) 按题意要求最后系统必须收敛于平衡点附近,即:()lim 0.75k y k →∞= (1.2)为了找出系统的合理输入信号,使得系统最终工作在平衡点附近,这里可以将系统线性化处理,将上述非线性系统进行泰勒展开得:()()()()()()()2323111111112!3!!n n y k y k y k y k y k u k k n αβαβαβαβγε--+---++-=-+因为 ,后面()1y k -的高阶项都可以扔掉(只作为寻找输入信号使用), 所以系统可以化为下式:此时不妨设系统输出()y k 的最后的极限为A , 从式1.2得0.75A =。
那么应该满足()()lim lim 1k k y k y k A →∞→∞=-= (1.5)从而有 ()()()11A u k k αβγε-=-+ (1.6) 同时为了抵消系统的部分噪声,这里采用MA TLAB 软件编程产生另一服从同一分布的均匀噪声()1k ε,将式1.6变形得:()()()01111u k u k k αβεγγ--=-(1.7)式1.7中()0u k 是一个最后收敛于系统平衡点0.75的基本信号,这里可以采用一阶线性系统的阶跃响应曲线作为基本信号()0u k ,同时考虑系统的平衡点,即设计为:()/00.75k Tu k e-=- (1.8)T 是一阶线性系统对应的时间常数,反应到输入基本信号()0u k 上就是过零点作()0u k 对应()()()()11y k y k u k k αβγε--=-+01αβ<(1.3)(1.4)曲线的切线的斜率1K T=。
最小二乘法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仿真概述说明1. 引言1.1 概述在控制系统中,系统辨识与自适应控制是两个重要的研究领域。
系统辨识是指通过实验数据来推断和建立数学模型,以揭示被控对象的动态特性和行为规律。
而自适应控制则是基于辨识模型预测,并根据外部环境变化及时调整控制策略,以实现对系统稳定性、鲁棒性和性能的优化。
本文将围绕系统辨识与自适应控制在Matlab仿真环境中的应用展开讨论。
首先,我们会介绍系统辨识和自适应控制的基本概念以及其在工程领域中的重要性。
然后,我们会详细介绍常用的系统辨识方法和自适应控制算法,并通过具体示例来说明它们的实际应用价值。
最后,我们会重点讲解如何利用Matlab进行仿真实验,并分享一些Matlab编程与仿真技巧。
1.2 文章结构本文共分为五个主要部分:引言、系统辨识、自适应控制、Matlab仿真以及结论与展望。
在引言部分,我们将介绍文章的背景和目的,以及整体结构安排。
接下来的三个部分将重点讨论系统辨识和自适应控制两个主题,并具体阐述各自的概念、方法、应用以及仿真结果分析。
最后一部分则是对全文进行总结回顾,并展望未来研究方向和发展趋势。
1.3 目的本文旨在通过对系统辨识与自适应控制在Matlab仿真环境中的研究与应用进行概述说明,帮助读者深入了解该领域的基本理论和实践技巧。
同时,在介绍相关概念和算法的同时,我们也希望能够启发读者思考并提出对未来研究方向和发展趋势的建议。
通过本文的阅读,读者将能够全面了解系统辨识与自适应控制在工程领域中的重要性,并学会利用Matlab进行仿真实验,从而加深对这一领域的理解与认知。
2. 系统辨识2.1 系统辨识概念系统辨识是指通过观测系统输入与输出之间的关系,以及对系统内部状态的估计,来建立数学模型以反映实际物理系统行为的过程。
在控制工程领域中,系统辨识是一种常用的方法,用于从已知输入与输出数据中推断出未知系统的特性和参数。
在系统辨识过程中,我们通常假设被研究的系统是线性、时不变且具有固定结构的。
最小二乘参数辨识的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用ident工具箱最小二乘法实例
Matlab是一种非常流行的科学计算软件,它提供了许多工具箱来帮助工程师和科学家进行数据分析、模拟和可视化。
其中,ident工具箱是一个用于系统辨识和模型参数估计的工具箱,可以帮助用户分析和建立动态系统的数学模型。
在ident工具箱中,最小二乘法是一种常用的参数估计方法,可以用来对数据进行拟合并估计模型参数。
本文将以一个实际的最小二乘法实例来介绍如何使用Matlab中的ident工具箱进行系统辨识和模型参数估计。
1. 准备工作在使用ident工具箱进行最小二乘法实例之前,首先需要准备好相关的数据和模型。
假设我们有一组输入输出数据,我们希望利用这些数据来建立一个二阶模型,并估计模型的参数。
我们需要先加载数据并确定模型的结构。
2. 加载数据我们需要将数据加载到Matlab的工作空间中。
假设我们的数据保存在一个名为data.mat的文件中,其中包含了输入信号u和输出信号y。
我们可以使用Matlab的load命令来加载数据:```matlabload('data.mat');```加载数据后,我们可以使用plot命令来可视化输入输出数据,以便对数据的特性有一个直观的了解。
通过观察数据的曲线可以对系统的动态特性有一个初步的认识,为建立数学模型提供依据。
3. 确定模型结构在建立模型之前,我们需要确定模型的结构。
假设我们的系统是一个二阶模型,可以表示为:```mathy(t) = b1*u(t-1) + b2*u(t-2) - a1*y(t-1) - a2*y(t-2)```其中,b1、b2、a1和a2分别是模型的参数,u(t)和y(t)分别是输入和输出信号。
根据系统的动态特性和经验知识,我们可以初步确定模型的结构。
4. 使用ident工具箱进行系统辨识接下来,我们将使用ident工具箱中的命令来进行系统辨识和模型参数估计。
我们需要利用数据和模型结构来创建一个iddata对象,该对象可以用于存储和处理系统辨识所需的数据和信息:```matlabdata = iddata(y, u);我们可以使用arx命令来建立一个ARX模型,并进行最小二乘法参数估计:```matlabmodel = arx(data, [2, 2, 1]);```在这个命令中,arx表示建立一个ARX模型,[2, 2, 1]表示模型的阶数,其中2表示输入延迟阶数,2表示输出延迟阶数,1表示直流增益。
系统辨识及其matlab仿真)
系统辨识及其matlab仿真)系统辨识是指利用已知的输入和输出数据,通过建立数学模型来描述和预测系统行为的过程。
它在工程领域中具有广泛的应用,包括控制系统设计、信号处理、通信系统等领域。
系统辨识可以分为参数辨识和非参数辨识两种方法。
参数辨识是指通过确定系统模型的参数来描述系统行为,常用的方法有最小二乘法、极大似然法等。
非参数辨识则是通过估计系统的输入输出关系函数来描述系统,常用的方法有频域方法、时域方法等。
在系统辨识过程中,噪声是一个不可忽视的因素。
噪声的存在会对辨识结果产生影响,因此需要对噪声进行建模和处理。
常用的噪声模型有高斯白噪声模型、AR模型、MA模型等。
在实际应用中,通常需要根据实际情况选择合适的噪声模型来进行系统辨识。
Matlab是一种常用的数学软件,它提供了丰富的工具箱和函数,可以方便地进行系统辨识的仿真。
在Matlab中,可以使用System Identification Toolbox进行系统辨识的建模和仿真。
该工具箱提供了多种辨识算法,包括线性和非线性的参数辨识方法。
在使用Matlab进行系统辨识仿真时,首先需要准备好输入输出数据。
对于已知系统,可以通过实验或者模拟得到系统的输入输出数据。
对于未知系统,可以通过对系统加入一定的激励信号,然后获取系统的响应数据来进行辨识。
接下来,可以使用Matlab提供的辨识函数进行系统辨识的建模。
对于线性系统,可以使用ARX模型、ARMAX模型、OE模型等进行建模。
对于非线性系统,可以使用非线性ARX模型、非线性ARMAX模型等进行建模。
这些辨识函数可以根据输入输出数据自动估计系统的参数,并生成系统模型。
在得到系统模型后,可以利用仿真工具对系统进行仿真分析。
例如,可以通过对系统模型进行输入信号的仿真,得到系统的输出响应,并与实际数据进行比较,验证辨识结果的准确性。
总之,系统辨识及其Matlab仿真是一种重要的工程方法,可以帮助我们理解和预测系统的行为。
基于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的系统辨识工具箱使用多种算法来进行系统辨识。
这些算法通常包括以下几种:
1. 最小二乘法(Least Squares):这是最常用的系统辨识方法。
最小二乘法试图找到一组参数,使得实际数据和模型预测之间的误差平方和最小。
2. 极大似然估计(Maximum Likelihood Estimation):这种方法基于数据生成的模型概率密度函数,通过最大化似然函数来估计模型参数。
3. 递归最小二乘法(Recursive Least Squares):这是一种在线算法,可以在数据流中实时更新模型参数。
4. 扩展最小二乘法(Extended Least Squares):这种方法可以处理包含噪声和异常值的数据,通过引入权重来调整误差平方和。
5. 非线性最小二乘法(Nonlinear Least Squares):对于非线性系统,需要使用非线性最小二乘法来估计参数。
6. 遗传算法(Genetic Algorithms):这是一种启发式搜索算法,通过模拟自然选择和遗传过程来寻找最优解。
7. 粒子群优化算法(Particle Swarm Optimization):这是一种基于群体智能的优化算法,通过模拟鸟群、鱼群等生物群体的行为来寻找最优解。
以上这些算法都是MATLAB系统辨识工具箱中常用的算法,根据具体的问题和数据,可以选择最适合的算法来进行系统辨识。
基于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引言最小二乘法是一种以选用误差平方和最小为准则,来最佳拟合出符合实验数据约最优参数估计的数学方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
系统辨识和最小二乘参数估计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:L
phi(k,:)=[-yk;uk(d:d+nb)]'; %此处phi(k,:)为行向量,便于组成phi矩阵
y(k)=phi(k,:)*theta+xi(k); %采集输出数据
IM=xor(S,x4); %产生逆M序列
if IM==0
u(k)=-1;
else
u(k)=1;
end
S=not(S); M=xor(x3,x4); %产生M序列
%更新数据
x4=x3; x3=x2; x2=x1; x1=M;
for i=d+nb:-1:2
uk(i)=uk(i-1);
end
uk(1)=u(k);
for i=na:-1:2
yk(i)=yk(i-1);
end
yk(1)=y(k);
end
thetae=inv(phi'*phi)*phi'*y' %计算参数估计值thetae
2.递推最小二乘
在批处理最小二乘法时,由于每次处理的数据量较大,而且常常要求对象参数能够在线实时估计,解决的方法就是将其化成递推算法,其基本思想为:
算法介绍:
仿真实例:
式中,为方差为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:L
phi=[-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:2
uk(i)=uk(i-1);
end
uk(1)=u(k);
for i=na:-1:2
yk(i)=yk(i-1);
end
yk(1)=y(k);
end
plot([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]);。