??
No.6Dec.,2005
微??处??理??机
MICROPROCESSORS
第6期
??
2005年12月
基于MATLAB的最小二乘法参数辨识与仿真
石贤良,吴成富
(西北工业大学自动化学院,西安710068)
????摘??要:本文介绍了基于MATLAB/Simulink的使用最小二乘法进行参数辨识的设计与仿真方法。首先简述参数辨识的概念和最小二乘法的基本原理,然后介绍如何采用Simulink建立系统的仿真对象模型和运用MATLAB的M语言编写最小二乘递推算法,最后结合实例给出相应的仿真结果和分析。本文的仿真方法克服了传统编程语言仿真时繁杂、难度高、周期长的缺点。
关键词:Matlab;Simulink;参数辨识;最小二乘法;仿真
中图分类号:TP391.9????文献标识码:A????文章编号:1002-2279(2005)06-0044-03
RlsParameterIdentificationandEmulateBasedonMatlab/Smiulink
SHIXian-liang,WUCheng-fu
(Automationcollege,NorthwesternPolytechnicalUniversity,Xian`710068,China)
????Abstract:Thispaperintroducesthemethodofdesignandsimulationofparameteriddentificationu??singRLSbasedonMATLAB/Simulink.Firstly,theconceptofparameteridentificationandthebasicprincipleofRLSisintroducedinbrie.fSecondly,thepaperfocusesonhowtodesignthesimulationmod??elwithMATLAB/SimulinkandthemethodusingMprogramlanguageinMATLABtodesignthealgorthmofRLS.Finally,accordingtoangivenexample,thesimulationandresultsareanalyzed.Themethodcanovercomesuchdisadvantagesaspropertiesofcomplexity,diffcultyandlengthinessinthetraditionalmeth??odofusingprogramlanguage.Byusingthismethod,thedynamicsystemsimulationbecomeseasy,visualandquick.
Keywords:Matlab;Simulink;Parameteridentification;RLS;Simulation
1??引??言
在系统辨识领域中,最小二乘法是一种得到广泛应用的估计方法,可用于动态,静态,线性,非线性系统。在使用最小二乘法进行参数估计时,为了
实现实时控制,必须优化成参数递推算法,即最小二乘递推算法。这种辨识方法主要用于在线辨识。MATLAB是一套高性能数字计算和可视化软件,它集成概念设计,算法开发,建模仿真,实时实现于一体,构成了一个使用方便、界面友好的用户环境,其强大的扩展功能为各领域的应用提供了基础。它拥有许多衍生的子集工具箱,给各领域的研究和工程应用提供了强有力的工具,使各层次的研究人员可直观,方便地进行分析,计算及设计,从而大大缩短了编程时间。
本文使用MATLAB6.5的M语言对最小二乘递推算法进行编程,并用MATLAB的交互式仿真集成环境Simulink实现系统参数的辨识与仿真。
2??参数辨识的概念
对于一个简单的系统,可以通过分析其过程的运动规律,应用一些已知的定理和原理,建立数学模
型,即所谓的??白箱建模??。但对于比较复杂的生产过程,该建模方法有很大的局限性。由于过程的输入输出信号一般总是可以测量的,而且过程的动态特性必然表现在这些输入输出数据中,那么就可以利用输入输出数据所提供的信息来建立过程的数学模型。这种建模方法就称为系统辨识。把辨识建模称作??黑箱建模??。系统辨识又分为参数辨识和阶次辨识,在本文中只讨论参数辨识问题。
3??最小二乘法
SISO系统动态过程的数学模型
-1-1
A(z)z(k)=B(z)u(k)+n(k)式中A(z)=1+a1z
--1
(1)
-na
其中u(k)、z(k)为输入输出量,n(k)为噪声。
+a2z
-2
+...+anaz
作者简介:石贤良(1977-),男,海南文昌人,硕士研究生,主研方向:导航,制导与控制。
收稿日期:2004-11-12
??6期
石贤良等:基于MATLAB的最小二乘法参数辨识与仿真
-1
??45??
????B(z
)=b1z
-1
+b2z
-2
+...+bbbz
-n
b
用Simulink进行仿真,并可通过示波器模块(Scope)观察仿真曲线。4.2??实例分析
如图1示仿真对象,系统的差分方程为
z(k)=-1.5z(k-1)-1.0z(k-2)-0.5z(k-3)-1.5u(k-1)-0.5u(k-2)+n(k)
其中,v(k)是服从正态分布的白噪声N(0,1)。输入信号u(k)采用4阶M序列,幅度为1。选择如下形式的辨识模型z(k)=a1z(k-1)+a2z(k-2)+a3z(k-3)=b1u(k-1)+b2u(k-2)+n(k)
展开后可得z(k)=-a1z(k-1)-a2z(k-2)-...-anaz(k-na)+b1u(k-1)+b2u(k-2)+...+bnbz(k-nb)
模型(1)可化成最小二乘格式:
??
z(k)=h(k)??+n(k)(2)
??
记??=[a1,a2,...anab1,b1,...,bnb]为待估计的参数。h(k)=[-z(k-1),...,-z(k-na),u(k-1),...,u(k-nb)],对于k=1,2,....L(L为数据长度),方程(2)构成一个线性方程组,写成zL(k)=HL(k)??+nL(k)
z(1)h(1)??????
n(1)z(2)h(2)n(2)
????ZL=,HL=,nL=
??????
??
z(L)n(L)h(L)根据最小二乘一次完成算法,其参数估计值为:??LS=(HLHL)HLZL
参数递推估计,就是当被辨识系统在运行时,每取得一次新的观测数据后,就在前次估计结果的基础上,利用新引入的观测数据对前次估计的结果,根据递推算法进行修正,减少估计误差,从而递推地得出新的参数估计值。这样,随着新观测数据的逐次引入,一次接一次地进行参数估计,直到参数估计值达到满意的精确程度为止。
最小二乘递推算法为:
P(k)=P(k-1)-K(k)h(k)P(k-1)K(k)=P(k-1)h(k)[h(k)P(k-1)h(k)+1]
??
??
??
??
??
-1
??
??
??
-1
??
图1??系统仿真对象
4.2.1??用M语言编写最小二乘算法
为最小二乘递推算法编辑一个M函数文件,命名为Arithmetic_LS.m,如下图2所示。
??(k)=??(k-1)+K(k)[z(k)-h(k)??(k-1)]
4??MATLAB仿真
4.1??Simulink简介
Simulink是一个用来对动态系统进行建模,仿真和分析的软件包。它提供了一种图形化的交互环境,只需用鼠标拖动的方法便能迅速地建立起系统的框图模型,甚至不需要编写一行代码。它和MATLAB的无缝结合使得用户可以利用MATLAB丰富的资源,建立仿真模型,监控仿真过程,分析仿真结果。另外,Simulink模型非常有利于代码的重用和移植。使用Simulink可以方便地进行控制系统、DSP系统、通信系统以及其它系统的仿真分析和原型设计。在MATLAB命令窗口键入simulink,即可进入了Simulink环境,此时,系统提供给用户两个主界面:Simulink结构图编辑界面和模块库。用户拷贝模块库中的模块到结构图编辑器中,再将它们适当连接以构成自己的控制系统结构图,然后即可
图2??用M语言编写最小二乘递推算法
FunctionsandTables模块库中的MATLABFunction模块(简称为MATLABFcn模块)可用于进行彼此间的数据交互。在本例中,采用MATLABFcn模块封装最小二乘递推算法函数。如图3所示。
4.2.2??系统的Simulink建模
在Simulink下搭建的仿真模型如图4所示。4.2.3??仿真结果与分析
采用输入白噪声的功率为0.1来模拟外部噪声进行仿真,辨识结果如表1,图5所示。
??46????
微??处??理??机2005年??
快速准确地估计出系统参数,而且在对模型结构或外部噪声干扰发生较大变化的情况下,也能获得较好的辨识结果。在参数辨识仿真过程中,可根据实验要求,使用M语言编程不同的算法,方便简捷。
表1??最小二乘递推算法的辨识结果
(Niosepower=0.1)
参数真值估计值
图3??被封装的最小二乘递推算法函数
a11.51.5004
a211.003
a3b1b20.5-1.5-0.50.5002-1.498-0.5001
5??结束语
从实践中体会到,利用MATLAB设计最小二乘递推算法并进行仿真,编程简便,直观高效。如用其它语言编写程序,即使产生简单的白噪声,至少也要10条语句,而在Simulink中有现成的模块,直接调用即可。与传统的高级语言相比,采用Simulink能够讯速建立起系统模型,建模时间短、模型简单、清
图4??Simulink下搭建的系统仿真模型
晰、计算精度高、同时在系统设计的任何阶段都能很方便地修改模型、评估结果和验证系统行为。另外,Simulink在计算结果的可视化方面也非常出色。本文的系统建模与仿真方法对于鱼雷,导弹,无人机,卫星等其他动态系统的建模仿真研究有着很好的借鉴意义。
参考文献:
[1]??方崇智,萧德云.过程辨识[M].北京:清华大学出版
社,1988.
[2]??李言俊,张科.系统辨识理论及应用[M].北京:国防
工业出版社,2003.
[3]??张志涌.精通MATLAB6.5版[M].北京:北京航空航
天大学出版社,2003.[4]??姚俊,马松辉.Simulink建模与仿真[M].西安:西安电
子科技大学出版社,2002.
图5??参数辨识过程(白噪声的功率为0.1)
在实验实践中看到,最小二乘递推算法不仅能(上接第43页)
为后继研究提供更好的目标区域信息。此算法易于
实现,可扩展性好,运算速度快且比较稳定,能够满足实时系统的要求,且能够很好的提取细节。实验证明它可以应用于各类多目标图像,是很实用的一种提取多目标的图像分割算法。
参考文献:
[1]??王积分,张新荣.计算机图像识别[M].北京:中国铁
道出版社,1988.
[2]??章毓晋.图像分割[M].北京:科学出版社,2001.
[3]??Otsu-AThresholdSelectionMethodfromGray-level
Histogram[J].IEEETransonSMC-99,1999:62-66.[4]??付忠良.图像阈值选取方法??Otsu方法的推广[J].计
算机应用,2000;5(5):37-39.[5]??LeeSU,ChungSY.Acomparativeperformancestudyof
severalglobalthresholdingtechniquesforsegmentation[J].ComputerVision,GraphicsandImageProcessing,1990:171-190.[6]??BhanuB,MingJ.Closed-loopadaptiveimagesegmenta??
tion[J].In:Proc.IEEEICCVPR,1991:734-735.
图3??水果、大米图像
6??结??论
利用双峰法和大津法相结合求得多阈值的方法能够很好的将多灰度层次目标图像进行分割,可以
根据实际情况进行扩展,进而提取更多的目标,从而