系统辨识最小二乘参数估计matlab
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中的系统辨识与参数估计技术

Matlab中的系统辨识与参数估计技术Matlab(Matrix Laboratory)是一款强大的数学软件,被广泛应用于科学计算、数据处理和工程设计等领域。
在实际工程项目中,经常需要通过已有的数据来推断系统的行为模型,这就涉及到系统辨识与参数估计技术。
本文将介绍在Matlab中使用系统辨识与参数估计技术的方法和步骤。
一、系统辨识与参数估计的概念系统辨识和参数估计是在给定输入输出数据的前提下,通过数学或统计方法来推断系统的动态模型和参数值的过程。
系统辨识旨在从实验数据中提取出模型的结构信息,而参数估计则是为了获得模型的具体参数值。
二、离散时间系统的辨识与参数估计对于离散时间系统,常用的辨识方法有ARX、ARMA和ARMAX等。
以ARX 模型为例,其数学表达式为:y(t) = -a(1)y(t-1) - a(2)y(t-2) - … - a(na)y(t-na) + b(1)u(t-1) + b(2)u(t-2) + … +b(nb)u(t-nb)其中,y(t)表示系统的输出,u(t)表示系统的输入,a和b分别是系统的参数。
在Matlab中,可以使用System Identification Toolbox来进行辨识和参数估计。
首先,需要将实验数据导入到Matlab中,然后根据数据的性质选择合适的辨识方法和模型结构。
接下来,使用辨识工具箱提供的函数,通过最小二乘法或最大似然估计等算法来得到系统的参数估计值。
三、连续时间系统的辨识与参数估计对于连续时间系统,常用的辨识方法有传递函数模型、状态空间模型和灰色系统模型等。
以传递函数模型为例,其数学表达式为:G(s) = num(s)/den(s)其中,num(s)和den(s)分别是系统的分子和分母多项式。
在Matlab中,可以使用System Identification Toolbox或Control System Toolbox 来进行连续时间系统的辨识和参数估计。
系统辨识最小二乘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进行系统辨识能够实现快速、准确的模型建立和参数估计。
本文将介绍在Matlab环境下常用的系统辨识技术方法及其应用。
二、系统辨识的基本概念系统辨识是通过对系统的输入和输出信号进行观测和分析,以推断系统的结构和参数。
一般来说,系统辨识包括建立数学模型、估计系统参数和进行模型验证三个步骤。
1. 建立数学模型建立数学模型是系统辨识的第一步,它是描述系统行为的数学表达式。
常用的数学模型包括线性模型、非线性模型和时变模型等。
2. 估计系统参数在建立了数学模型之后,需要通过对实验数据的分析,估计出系统的参数。
参数估计可以通过最小二乘法、极大似然估计法等方法实现。
3. 模型验证模型验证是为了确定估计得到的系统模型是否准确。
常用的方法有经验验证、残差分析、模型检验等。
三、常用的系统辨识技术方法1. 线性参数模型线性参数模型是最常用的系统辨识方法之一。
它假设系统具有线性特性,并通过估计线性模型的参数来描述系统。
在Matlab中,可以使用函数"arx"进行线性参数模型的辨识。
2. 神经网络模型神经网络模型是一种非线性模型,它通过人工神经元的连接权值来描述系统行为。
在Matlab中,可以使用"nlarx"函数进行神经网络模型的辨识。
3. 系统辨识工具箱Matlab提供了丰富的系统辨识工具箱,包括System Identification Toolbox和Neural Network Toolbox等。
这些工具箱提供了各种方法和函数,方便用户进行系统辨识分析。
四、利用Matlab进行系统辨识的应用案例1. 系统辨识在控制系统中的应用系统辨识在控制系统中具有广泛的应用,如无人机控制、机器人控制等。
通过对系统进行辨识,可以建立准确的数学模型,并用于控制器设计和系统优化。
利用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函数来实现时频域方法的系统辨识。
系统辨识最小二乘法—课设报告

课 程 设 计 报 告学 院: 专业名称: 学生姓名: 指导教师: 时 间:课程设计任务书一、设计内容SISO 系统的差分方程为:)()2()1()2()1()(2121k k u b k u b k z a k z a k z υ+-+-=-+-+参数取真值为:[]0.35 0.39 0.715 1.642=T θ,利用MATLAB 的M 语言辨识系统中的未知参数1a 、2a 、1b 、2b 。
二、主要技术要求用参数的真值及差分方程求出)(k z 作为测量值,)(k υ是均值为0,方差为0.1、0.5和0.01的不相关随机序列。
选取一种最小二乘算法利用MATLAB 的M 语言辨识参数。
三、进度要求2周(6月28日-7月11日)完成设计任务,撰写设计报告3000字以上,应包含设计过程、 计算结果、 图表等内容。
具体进度安排:◆ 6月28日,选好题目,查阅系统辨识相关最小二乘法原理的资料。
◆ 6月29日,掌握最小二乘原理,用MATLAB 编程实现最小二乘一次完成算法。
◆ 6月30日,掌握以最小二乘算法为基础的广义最小二乘递推算法。
◆ 7月1日,用MATLAB 编程实现广义最小二乘递推算法。
◆ 7月2日,针对题目要求进行参数辨识,并记录观察相关数据。
◆ 7月3日-7月5日,对参数辨识结果进行分析,找出存在的问题,提出改进方案,验证改进优化结果。
◆ 7月6日-7月7日,撰写课程设计报告。
◆ 7月8日,对课程设计报告进行校对。
◆ 7月9日,打印出报告上交。
学 生王景 指导教师 邢小军1. 设计内容设SISO 系统的差分方程为:)()2()1()2()1()(2121k k u b k u b k z a k z a k z υ+-+-=-+-+ 式(1-1) 参数取真值为:[]0.35 0.39 0.715 1.642=Tθ,利用MATLAB 的M 语言辨识系统中的未知参数1a 、2a 、1b 、2b 。
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仿真一、二阶系统的最小二乘法一次完成算法的辨识程序及结果程序源代码:clear % 工作间清零u = [-1,1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,1,1]; % 系统辨识的输入信号为一个周期的M序列z = zeros( 1, 16); % 定义输出观测值的长度for k = 3 : 16% 用理想输出值作为观测值z(k) = 1.8*z(k-1) - 0.8*z(k-2) + 1.1*u(k-1) + 0.4*u(k-2);ZL( k, : ) = z(k); % 给样本矩阵ZL赋值Hl = [ -z(k-1), -z(k-2), u(k-1), u(k-2) ]; % 用理想输出值作为观测值HL( k, : ) = Hl;endsubplot(3,1,1) % 画三行一列图形窗口中的第一个图形stem(u) % 画出输入信号u的经线图形subplot(3,1,2) % 画三行一列图形窗口中的第二个图形i=1:1:16; % 横坐标范围是1到16,步长为1% 图形的横坐标是采样时刻i, 纵坐标是输出观测值z, 图形格式为连续曲线plot(i,z)subplot(3,1,3) % 画三行一列图形窗口中的第三个图形stem(z),grid on % 画出输出观测值z的经线图形,并显示坐标网格u,z % 显示输入信号和输出观测信号c1=HL'*HL; % 计算参数并显示c2=inv(c1);c3=HL'*ZL;c=c2*c3a1=c(1), a2=c(2), b1=c(3), b2=c(4) % 从中分离出并显示a1 、a2、b1、b2运算结果如下:u =-1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1z =Columns 1 through 90 0 0.7000 0.5600 1.1480 3.1184 6.1947 10.1558 12.6246 Columns 10 through 1613.0997 11.9798 11.7838 10.9270 8.7416 7.6933 8.3546c =-1.80000.80001.10000.4000a1 =-1.8000a2 =0.8000b1 =1.1000b2 =0.4000所画图形如下:二、实际压力系统的最小二乘辨识程序及结果程序源代码:clear % 工作间清零V = [ 54.3, 61.8, 72.4, 88.7, 118.6, 194.0]' % 赋初值V,并显示P = [ 61.2, 49.5, 37.6, 28.4, 19.2, 10.1]' % 赋初值P,并显示% P、V之间的关系:logP=-alpha*logV% +logbeita=[-logV,1][alpha,log(beita)]'=HL*sitafor i = 1 : 6; % 循环变量的取值为从1到6 Z(i) = log( P (i) ); % 赋系统的输出采样值ZL( i, : ) = Z(i); % 给样本矩阵ZL赋值Hl = [ log( V(i) ),1 ]; % 给HL赋值HL( i, : ) = Hlend % 循环结束c1=HL'*HL; % 计算参数并显示c2=inv(c1);c3=HL'*ZL;c4=c2*c3alpha = c4(1) % 为c4的第1个元素beita = exp(c4(2)) % 为以自然数为底的c4的第2个元素的指数运算结果如下:V =54.300061.800072.400088.7000118.6000194.0000P =61.200049.500037.600028.400019.200010.1000HL =3.9945 1.0000HL =3.9945 1.00004.1239 1.0000HL =3.9945 1.00004.1239 1.00004.2822 1.0000HL =3.9945 1.00004.1239 1.00004.2822 1.00004.4853 1.0000HL =3.9945 1.00004.1239 1.00004.2822 1.00004.4853 1.00004.7758 1.0000HL =3.9945 1.00004.1239 1.00004.2822 1.00004.4853 1.00004.7758 1.00005.2679 1.0000 c4 =-1.40429.6786alpha =-1.4042beita =1.5972e+004。
matlab最小二乘法求参数

matlab最小二乘法求参数
matlab最小二乘法是一种常见的参数估计方法,可以在一组数据中找到最优的拟合曲线或拟合函数参数。
具体步骤如下:
1. 定义模型函数和目标函数
首先,需要定义一个模型函数,用于描述数据之间的关系。
例如,假设要拟合的函数是一条直线,可以定义模型函数为 y=a*x+b,其中a和b是待求参数,x和y是数据点。
然后,根据最小二乘法的原理,需要定义目标函数,即误差的平方和。
对于直线拟合,可以定义目标函数为 sum((y-a*x-b).^2)。
2. 求解参数
使用matlab内置的最小二乘法函数,可以快速求解出最优的参数值。
使用该函数的格式为[p,r]=polyfit(x,y,n),其中x和y是数据点的横纵坐标,n是多项式的阶数(对于直线拟合,n=1),p是拟合函数的系数,r是残差向量。
3. 绘制拟合曲线
得到拟合函数的系数之后,可以根据模型函数和参数值,绘制出拟合曲线。
使用matlab的plot函数,可以将拟合曲线和原始数据点一同绘制在同一张图中,以方便比较和分析。
总之,matlab最小二乘法是一种强大的参数估计方法,可用于解决各种数据拟合问题。
通过掌握其原理和使用方法,可以更好地应对实际应用中的数据分析需求。
- 1 -。
(完整版)系统全参数辨识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,继续循环。
使用MATLAB进行系统辨识与参数估计的基本原理

使用MATLAB进行系统辨识与参数估计的基本原理近年来,随着人工智能和机器学习的发展,系统辨识和参数估计变得越来越重要。
在工程和科学领域,系统辨识与参数估计可以帮助我们理解和预测复杂系统的行为,从而为决策和控制提供有力支持。
而MATLAB作为一种强大的科学计算软件,在系统辨识与参数估计方面提供了丰富的工具和功能。
本文将介绍MATLAB 中进行系统辨识与参数估计的基本原理。
一、系统辨识的概念系统辨识是指通过一系列的实验和数据分析,确定出系统的数学模型或特性。
在实际工程和科学问题中,我们经常遇到许多系统,如电子电路、生化反应、飞行控制系统等。
通过系统辨识,我们可以了解系统的行为规律,预测未来状态,从而进行优化和控制。
在MATLAB中,可以使用系统辨识工具箱(System Identification Toolbox)进行系统辨识。
该工具箱提供了一系列的函数和算法,可以帮助我们建立和分析系统模型。
例如,使用arx函数可以基于自回归模型建立离散时间系统的模型,使用tfest函数可以进行连续时间系统的模型辨识。
二、参数估计的基本原理参数估计是系统辨识的一个重要部分,它是指通过已知的输入输出数据,估计系统模型中的参数。
在实际应用中,我们通常只能通过实验数据来获得系统的输入输出信息,而无法直接观测到系统内部的参数。
因此,参数估计成为了一种重要的技术,用于从数据中推断出系统的模型参数。
在MATLAB中,参数估计的基本原理是最小二乘估计。
最小二乘估计是指寻找能够最小化实际输出与模型输出之间的误差平方和的参数值。
在MATLAB中,可以使用lsqcurvefit函数进行最小二乘估计,该函数可以用来拟合非线性模型或者线性模型。
此外,还可以使用最大似然估计(MLE,Maximum Likelihood Estimation)进行参数估计,MATLAB通过提供相应的函数,如mle函数和mlecov 函数,支持最大似然估计的使用。
13-基于MATLAB的最小二乘法参数辨识与仿真

4. 2. 1 用 M 语言编写最小二乘算法 为最小二乘递推算法编辑一个 M 函数文件, 命
名为 A rithm et ic_LS. m, 如下图 2所示。
图 2 用 M 语言编写最小二乘递推算法
Funct ions and T ab les 模 块 库 中 的 MATLAB Funct ion模块 ( 简称为 MATLAB F cn模块 ) 可用于进 行彼此 间的 数 据交 互。 在本 例 中, 采用 MATLAB Fcn模块封装最小 二乘递 推算法 函数。 如图 3 所 示。 4. 2. 2 系统的 S im ulink建模
ZL =
, HL =
, nL =
z(L )
h一次完成算法, 其参数估计值为:
LS = (H L H L ) - 1H L ZL 参数递推估计, 就是当被辨识系统在运行时, 每
取得一次新的观测数据后, 就在前次估计结果的基 础上, 利用新引入的观测数据对前次估计的结果, 根 据递推算法进行修正, 减少估计误差, 从而递推地得 出新的参数估计值。这样, 随着新观测数据的逐次 引入, 一次接一次地进行参数估计, 直到参数估计值 达到满意的精确程度为止。
3 最小二乘法
S ISO 系 统动 态过 程的 数学模 型
A ( z- 1 ) z( k) = B( z- 1 ) u( k) + n( k)
( 1)
其中 u( k) 、z( k) 为输入输出量, n( k)为噪声。
式中 A ( z- ) = 1+ a1 z- 1 + a2 z- 2 + . . . + an a z- na
K ey w ords: M a tlab; S im ulink; Param eter iden tif ication; RLS; S imu lation
Matlab的系统辨识和参数估计方法

Matlab的系统辨识和参数估计方法一、引言Matlab是一种强大的计算机软件,被广泛应用于各个领域的科学研究和工程实践。
在信号处理、控制系统设计等领域,系统的辨识和参数估计是一项重要的任务。
本文将介绍Matlab中常用的系统辨识和参数估计方法,包括参数辨识、频域辨识、时域辨识等方面。
同时,还将探讨这些方法的优势和局限性。
二、参数辨识参数辨识是一种推断系统输入和输出之间关系的方法。
Matlab提供了多种参数辨识工具箱,例如System Identification Toolbox。
其中,最常用的方法包括最小二乘法、极大似然法、递归最小二乘法等。
最小二乘法是一种经典的参数估计方法,通过最小化测量值与预测值之间的差异来估计参数。
Matlab中的lsqcurvefit函数可以用于最小二乘拟合曲线。
例如,通过拟合一组数据点得到一个最优的曲线,可以估计曲线的参数。
极大似然法是一种基于概率统计的参数估计方法,通过最大化观测数据出现的似然函数来估计参数。
Matlab中的mle函数可以用于极大似然估计。
例如,在某个信号的概率密度函数已知的情况下,可以通过观测到的样本来估计概率密度函数的参数。
递归最小二乘法是一种递归更新参数的方法,可以在随时间变化的系统中实时地进行参数估计。
Matlab中的rls函数可以用于递归最小二乘估计。
例如,在自适应滤波中,可以通过递归最小二乘法来实时估计信号的参数。
三、频域辨识频域辨识是一种基于频谱分析的参数估计方法,可以在频率域中确定系统的特性。
Matlab提供了多种频域辨识工具箱,例如System Identification Toolbox和Signal Processing Toolbox。
其中,最常用的方法包括功率谱密度估计、自相关函数法、协方差法等。
功率谱密度估计是一种常用的频域参数估计方法,可以估计信号在不同频率上的能量分布。
Matlab中的pwelch函数可以用于功率谱密度估计。
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进行系统辨识与模型验证的基本原理系统辨识和模型验证是探索和分析系统特性的重要方法。
通过辨识和验证,我们可以从实际数据中提取模型、预测系统行为,并验证模型的准确性。
MATLAB 是一个强大的数学和工程计算软件工具,它提供了一些用于系统辨识和模型验证的功能和工具。
在本文中,我们将介绍使用MATLAB进行系统辨识和模型验证的基本原理和方法。
一、系统辨识的基本概念和方法系统辨识是研究系统的特性和行为的过程。
它通过收集实际数据来构建数学模型,以描述和预测系统的行为。
系统辨识方法主要分为两类:参数辨识和非参数辨识。
1. 参数辨识参数辨识是建立参数化模型的过程。
在参数辨识中,我们根据已知输入和输出数据,通过最小化误差来估计模型参数。
常见的参数辨识方法包括最小二乘法、最大似然估计法、递推估计法等。
MATLAB提供了一些函数和工具箱来支持参数辨识。
其中最常用的是System Identification Toolbox。
该工具箱提供了一系列的函数和工具,用于数据预处理、模型选择和参数估计等。
通过简单的函数调用,我们可以方便地进行参数辨识。
2. 非参数辨识非参数辨识是在不事先确定具体模型结构的情况下,通过数据来估计系统的频率特性。
非参数辨识方法主要包括频域法、时域法和非线性系统辨识法等。
MATLAB提供了一些非参数辨识的函数和工具箱。
例如,Spectral Analysis Toolbox就是一个常用的非参数辨识工具箱,它包含了一系列的函数和工具,用于频率域分析和非参数模型估计。
二、模型验证的基本概念和方法模型验证是评估模型的准确性和适用性的过程。
在模型验证中,我们将模型与实际数据进行比较,以判断模型的有效性和可靠性。
模型验证的方法主要有两种:预测和检验。
1. 预测预测方法是根据模型对未来的系统行为进行预测,并将预测结果与实际观测结果进行比较。
如果预测结果与实际观测结果相符,则说明模型是有效的。
反之,则需要重新考虑模型的结构和参数。
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实现最小二乘递推算法辨识系统参数

自动化专业综合设计报告设计题目:最小二乘递推算法辨识系统参数所在实验室:自动化系统仿真实验室指导教师:学生姓名班级计082-2 班学号撰写时间:2012-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:Nyk(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,a1t(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作为一种强大的数值计算工具,提供了许多用于参数估计的函数和工具包。
本文将介绍一些常用的参数估计方法及其在Matlab中的实现。
一、最小二乘法最小二乘法是一种用于估计线性回归模型的方法。
它的目标是通过最小化观测值与模型预测值之间的差异来找到最优的参数估计。
在Matlab中,可以使用"lsqcurvefit"函数来进行最小二乘法的参数估计。
该函数需要指定待估计模型的函数句柄、初始参数值和观测数据等信息。
通过迭代优化算法,该函数可以得到最优的参数估计值。
二、极大似然估计极大似然估计是一种常用的参数估计方法,它基于观测数据的概率分布模型,并试图通过调整参数值来使得观测数据出现的概率最大化。
在Matlab中,可以使用"mle"函数来进行极大似然估计。
该函数要求用户提供一个概率分布模型的概率密度函数或似然函数,在给定观测数据的情况下,该函数将通过最大化似然函数来估计模型参数。
三、贝叶斯估计贝叶斯估计是一种基于贝叶斯定理的参数估计方法,它通过结合先验分布和观测数据来得到参数的后验分布。
在Matlab中,可以使用"bayesopt"函数来进行贝叶斯估计。
该函数使用贝叶斯优化算法来搜索参数空间,以找到最大化或最小化指定目标函数的参数。
用户可以自定义目标函数和参数空间,并指定先验分布的类型和参数。
四、非参数估计非参数估计是一种不依赖于具体概率分布的参数估计方法,它通过直接对观测数据进行分析来得到参数估计。
在Matlab中,可以使用"ksdensity"函数来进行核密度估计,该方法用于估计连续变量的概率密度函数。
该函数可以根据给定的观测数据来计算其概率密度估计,并提供灵活的参数选项,以调整估计的精度和平滑度。
五、参数估计的应用参数估计在实际应用中具有广泛而重要的用途。
系统辩识实验报告

一、实验目的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. 实验结果表明,递推最小二乘算法能够有效减小参数估计误差,提高系统辨识精度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最小二乘参数估计
摘要:
最小二乘的一次性完成辨识算法(也称批处理算法),他的特点是直接利用已经获得的所有(一批)观测数据进行运算处理。
这种算法在使用时,占用内存大,离线辨识,观测被辨识对象获得的新数据往往是逐次补充到观测数据集合中去的。
在应用一次完成算法时,如果要求在每次新增观测数据后,接着就估计出系统模型的参数,则需要每次新增数据后要重新求解矩阵方程()Z l T l l T
l ΦΦΦ-∧=1θ。
最小二乘辩识方法在系统辩识领域中先应用上已相当普及,方法上相当完善,可以有效的用于系统的状态估计,参数估计以及自适应控制及其他方面。
关键词:
最小二乘(Least-squares ),系统辨识(System Identification ) 目录:
1.目的 (2)
2.设备 (2)
3引言 (2)
课题背景 (2)
4数学模型的结构辨识 (3)
5 程序 (4)
M 序列子函数 (4)
主程序 (5)
6实验结果: (7)
7参考文献: (7)
1.目的
掌握系统辨识的理论、方法及应用
熟练Matlab 下最小二乘法编程
掌握M 序列产生方法
2.设备
PC 机1台(含Matlab 软件)
3引言
课题背景
最小二乘理论是有高斯()在1795年提出:“未知量的最大可能值是这样一个数值,它使各次实际观测值和计算值之间的差值的平方乘以度量其精度的数值以后的和最小。
”这就是最小二乘法的最早思想。
最小二乘辨识方法提供一个估算方法,使之能得到一个在最小方差意义上与实验数据最好拟合的数学模型。
递推最小二乘法是在最小二乘法得到的观测数据的基础上,用新引入的
数据对上一次估计的结果进行修正递推出下一个参数估计值,直到估计值达到满意的精确度为止。
4数学模型的结构辨识
根据汉格尔矩阵估计模型的阶次
设一个可观可控的SISO 过程的脉冲响应序列为{个g(1),g(2),……g(L)},可以通过汉格尔(Hankel )矩阵的秩来确定系统的阶次。
令Hankel 阵为:
⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎣⎡-++-++++-++=)22()1()1()()2()1()1()1()(),(l k g k g l k g l k g k g k g l k g k g k g k l H ,其中l 决定),(k l H 阵地维数,k 可在1至()22+-l L 间任意选择。
则有[]k n l n k l H rank ∀≥=,,),(00。
如果0n l ≥(过程的真实阶次),那么Hankel 阵的秩等于0n 。
因此可以利用Hankel 阵的奇异性来确定系统的阶次0n 。
根据残差平方和估计模型的阶次
SISO 过程的差分方程模型的输出残差为)(~k z ,数据长度L ,n H ˆ为n
ˆ阶时的数据矩阵,n ˆˆθ为n
ˆ阶时的参数的估计量,n ˆ为模型阶次估计值,0n 为真实阶次,则残差平方和函数J : )(~1)ˆ()ˆ(1~~1)ˆ(1
2ˆˆˆˆˆˆ00k z L H z H z L z z L n J L n n k n n n T n n n n T n ∑++==--==θθ 残差平方和有这样的性质:当L 足够大时,随着n
ˆ增加)ˆ(n J 先是显著地下降,当n ˆ>0n 时,)ˆ(n
J 值显著下降的现象就终止。
这就是损失函数法来定阶的原理。
⎪⎩
⎪⎨⎧--==-)ˆ()ˆ(1ˆ)(ˆ21ML n n T ML n n v n T n n T n ML H z H z L z H H H θϑσθ n L n
AIC v ˆ4ˆlog )ˆ(2+=σ 具体的定阶用法是:对不同阶次首先用极大似然法估计参数,然后计算似然函数值及)ˆ(n
AIC 值,找到使min )ˆ(=n AIC 的n ˆ作为0n 。
5 程序
%待辨识系统 z(k)=*z(k-1)*z(k-2)+*z(k-3)+u(k-1)+*u(k-2)*u(k-3)+v(k)/800%
clc
clear %清理工作间变量
L=300; % M 序列的周期
x1=1;x2=1;x3=1;x4=0;x5=1;x6=0; %四个移位积存器的输出初始值
for k=1:L; %开始循环,长度为L
u(k)=xor(x3,x4); %第一个移位积存器的输入是第3个与第4个移位积存器的输出的“或”
x6=x5;x5=x4;x4=x3;x3=x2;x2=x1;x1=u(k);
end %大循环结束,产生输入信号u
plot(u) %绘图M 序列
v=randn(300,1); %随机误差干扰
z=zeros(1,300);
for k=4:300
z(k)=*z(k-1)+*z(k-2)+*z(k-3)+*u(k-1)+*u(k-2)*u(k-3)+v(k)/400; %用理想输出值
end
H=zeros(300,6); %定义一个H“0”矩阵
for i=4:300
H(i,:)=[-z(i-1) -z(i-2) -z(i-3) u(i-1) u(i-2) u(i-3)];%用循环产生H矩阵 z1(i,:)=[z(i)]; %用循环产生z矩阵
end
%计算参数%
c=inv(H'*H)*H'*z1%带入公式书上辨识出参数
%系统阶次辨识AIC算法%
bb=zeros(5,1);
n=1; %假设为1阶
for i=2:300
H1(i,:)=[-z(i-1) u(i-1)];
zz1(i,:)=[z(i)];
end
aa1=inv(H1'*H1)*H1'*zz1
bb(1)=(zz1-H1*aa1)'*(zz1-H1*aa1)/L;
AIC(1)=L*log(bb(1))+4*n;
n=2; %假设为2阶
for i=3:300
H2(i,:)=[-z(i-1) -z(i-2) u(i-1) u(i-2)];
zz2(i,:)=[z(i)];
end
aa2=inv(H2'*H2)*H2'*zz2
bb(2)=(zz2-H2*aa2)'*(zz2-H2*aa2)/L;
AIC(2)=L*log(bb(2))+4*n;
n=3; %假设为3阶
for i=4:300
H3(i,:)=[-z(i-1) -z(i-2) -z(i-3) u(i-1) u(i-2) u(i-3)];
zz3(i,:)=[z(i)];
end
aa3=inv(H3'*H3)*H3'*zz3
bb(3)=(zz3-H3*aa3)'*(zz3-H3*aa3)/L;
AIC(3)=L*log(bb(3))+4*n;
n=4; %假设为4阶
for i=5:300
H4(i,:)=[-z(i-1) -z(i-2) -z(i-3) -z(i-4) u(i-1) u(i-2) u(i-3) u(i-4)]; zz4(i,:)=[z(i)];
end
aa4=inv(H4'*H4)*H4'*zz4
bb(4)=(zz4-H4*aa4)'*(zz4-H4*aa4)/L;
AIC(4)=L*log(bb(4))+4*n;
n=5; %假设为5阶
H5(i,:)=[-z(i-1) -z(i-2) -z(i-3) -z(i-4) -z(i-5) u(i-1) u(i-2) u(i-3) u(i-4) u(i-5)];
zz5(i,:)=[z(i)];
end
aa5=inv(H5'*H5)*H5'*zz5
bb(5)=(zz5-H5*aa5)'*(zz5-H5*aa5)/L;
AIC(5)=L*log(bb(5))+4*n;
x=min(AIC)
for i=1:5
if(AIC(i)==x)
N=i %所辨识出的阶次N
end
end
plot(1:5,[AIC(1) AIC(2) AIC(3) AIC(4) AIC(5)])
6实验结果:
c =
a1 =
a2 =
a3 =
b1 =
b2 = b3 =
3。