系统辨识理论及matlab仿真
- 格式:doc
- 大小:12.86 KB
- 文档页数:2
系统辨识和最小二乘参数估计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.系统辨识的基本理论系统辨识是根据系统的输入输出的时间函数来确定描述系统行为的数学模型,是现代控制理论中的一个分支。
对系统进行分析的主要问题是根据输入时间函数和系统的特性来确定输出信号。
它包括确定系统数学模型结构和估计其参数的方法。
系统辨识的流程如图1所示。
图1 系统辨识过程流程图2.模型参数辨识的方法系统辨识包括模型阶次辨识和参数辨识。
经典参数辨识的方法主要有他包括脉冲响应法、阶跃响应法、频率响应法、最小二乘法、相关分析法、谱分析法和极大似然法等,其中最小二乘法是最基本和最经典的,也是其他方法基本的思想的来源。
比如辅助变量法。
2.1 最小二乘法辨识考虑如下CAR模型:(1)参数估计的任务是根据可测量的输入和输出,确定如下个参数:对象(1)可以写成如下最小二乘形式:(2)现有L组输入输出观测数据:利用最小二乘法得到系统参数的估计值为:(3)2.2 辅助变量法辨识当为有色噪声时,利用最小二乘法进行参数辨识时往往得不到无偏一致的参数估计量。
在这个时候可以引入变量,然后利用最小二乘法进行辨识就可得到无偏一致的参数估计量。
因此,对于线性或本质线性系统,其过程的模型都可以化成最小二乘形式,考虑如下所示的模型方程:(4)将上式写成最小二乘格式,则得:假定存在一个辅助变量矩阵,维数与H相同,它满足以下极限特性:式中Q是非奇异矩阵。
如果辅助变量满足上述条件,则有:(5)图2 系统仿真图3.建模实例3.1 非参数模型辨识某被控对象的数学模型可以表示为:,式中:;为白噪声,编制MATLAB程序,分别对上述对象进行ARX建模和辅助变量法建模,并比较两种方法得到的脉冲响应。
系统辨识理论及matlab仿真现今,随着电子技术的发展,在计算机上实现系统辨识问题变得日益重要。
因此,本文将介绍系统辨识理论及matlab仿真。
要完成这一任务,首先必须掌握辨识过程中涉及到的有关知识,然后才能对系统进行辨识,找出系统的主要特征,从而判断系统属于何种类型。
为了使读者易于接受并容易理解这些知识,在这里给出了一个简化的系统辨识方法。
对该方法的应用还需读者结合系统的具体情况和现有的设备仪器等来分析。
这里仅举例说明辨识过程。
1。
为了提高系统辨识的效率,一般采用的是分层次的方法,即:( 1)层1:列出所要辨识的所有系统元件。
( 2)层2:给出每个系统元件的状态变量值,其含义就是它的各个可能状态;( 3)层3:指出系统元件某一状态变量值与其他状态变量值之间的关系式。
如果在层2和层3之间加入一个自学习控制过程,则被辨识系统可以简化为两部分:前面提到的第1和第2部分。
2。
列出全部系统元件的状态变量,这里不难看出每一层次的系统元件都有它们各自的可能状态。
同时也可列出最坏情况下所有元件的状态变量,即:。
由状态变量与可能状态,可以很方便地推导出系统的属性值,进而确定该系统属于何种类型。
下面将分别作以介绍。
3。
系统根据可能状态组成的三角形可以看成三种可能的系统结构:( 1)原型:简单系统结构,有3个独立元件,一个是原点,另两个是控制点,相当于节点,且在原点处可以设置任意一个输入,也可以设置任意一个输出。
( 2)星型结构:星型结构可以看成四个独立元件,有一个或多个中心节点,每个节点都可以被设置成输入或输出,且可以沿连线选择任意两个元件做连接,若这样选择,则系统可以看成环状结构。
4。
基于系统结构的辨识方法5。
基于系统状态变量的辨识方法7。
基于状态变量的辨识方法。
把系统的状态空间描述为状态向量空间,把描述系统的状态转移矩阵与其描述的状态向量组成一个多项式,利用矩阵的运算来辨识系统,在大多数情况下都可以得到比较满意的辨识结果。
第二部分程序注释及运行结果读者须知:为了便于读者理解,现将光盘上第一部分可直接在MATLAB6.I 下运行的MATLAB程序的编号和书本上的内容对应如下,每个程序题目括号内的file.m是对应书本上的内容在光盘上第一部分的程序编号。
第二章的随机序列产生程序例2.1 用乘同余法产生随机数(见光盘FLch2sjxleg1.m)①编程如下:A=6; N=100; %初始化;x0=1; M=255;for k=1:N %乘同余法递推100次;x2=A*x0; %x2和x0分别表示x i和x i-1;x1=mod (x2,M); %将x2存储器的数除以M,取余数放x1(x i)中;v1=x1/256; %将x1存储器的数除以256得到小于1的随机数放v1中;)存放在矩阵存储器v的第k列中,v(:,k) v(:,k)=v1; % 将v1中的数(i%表示行不变、列随递推循环次数变化;x0=x1; %x i-1= x i;v0=v1;end %递推100次结束;v2=v %该语句末无‘;’,实现矩阵存储器v中随机数放在v2中,%且可直接显示在MA TLAB的window中;k1=k;%grapher %以下是绘图程序;k=1:k1;plot(k,v,k,v,'r');xlabel('k'), ylabel('v');tktle('(0-1)均匀分布的随机序列')②程序运行结果如图2.5所示。
图2.5 采用MA TLAB产生的(0,1)均匀分布的随机序列图③产生的(0-1)均匀分布的随机序列在程序运行结束后,产生的(0,1)均匀分布的随机序列,直接从MATLAB的window 界面中copy出来如下(v2中每行存6个随机数):v2 =0.0234 0.1406 0.8438 0.0820 0.4922 0.96090.7852 0.7266 0.3750 0.2578 0.5508 0.31640.9023 0.4336 0.6094 0.6680 0.0234 0.14060.8438 0.0820 0.4922 0.9609 0.7852 0.72660.3750 0.2578 0.5508 0.3164 0.9023 0.43360.6094 0.6680 0.0234 0.1406 0.8438 0.08200.4922 0.9609 0.7852 0.7266 0.3750 0.25780.5508 0.3164 0.9023 0.4336 0.6094 0.66800.0234 0.1406 0.8438 0.0820 0.4922 0.96090.7852 0.7266 0.3750 0.2578 0.5508 0.31640.9023 0.4336 0.6094 0.6680 0.0234 0.14060.8438 0.0820 0.4922 0.9609 0.7852 0.72660.3750 0.2578 0.5508 0.3164 0.9023 0.43360.6094 0.6680 0.0234 0.1406 0.8438 0.08200.4922 0.9609 0.7852 0.7266 0.3750 0.25780.5508 0.3164 0.9023 0.4336 0.6094 0.66800.0234 0.1406 0.8438 0.0820第二章的白噪声产生程序例2.2 用乘同余法产生(见光盘FLch2bzsheg2.m)①编程如下:A=6; x0=1; M=255; f=2; N=100;%初始化;x0=1; M=255;for k=1: N %乘同余法递推100次;x2=A*x0; %分别用x2和x0表示x i+1和x i-1;x1=mod (x2,M); %取x2存储器的数除以M的余数放x1(x i)中;v1=x1/256; %将x1存储器中的数除以256得到小于1的随机数放v1中;)减去0.5再乘以存储器f中的系数,存放v(:,k)=(v1-0.5 )*f; %将v1中的数(i在矩阵存储器v的第k列中,v(:,k)表示行不变、列随递推循环次数变化;x0=x1; % x i-1= x i;v0=v1;end %递推100次结束;v2=v %该语句后无‘;’,实现矩阵存储器v中随机数放在v2中,且可直接显示在MA TLAB的window中;k1=k;%grapher %以下是绘图程序;k=1:k1;plot(k,v,k,v,'r');xlabel('k'), ylabel('v');tktle(' (-1,+1)均匀分布的白噪声')②程序运行结果如图2.6所示。
如何使用MATLAB进行系统辨识与模型建模引言:近年来,随着科学技术的飞速发展,各行各业都在努力寻求更高效、更智能的解决方案。
系统辨识与模型建模作为一种重要方法和工具,被广泛应用于控制系统、信号处理、机器学习等领域。
在这些领域中,MATLAB作为一款功能强大的数值计算软件,为我们提供了丰富的工具和函数,可用于进行系统辨识与模型建模的分析和实现。
本文将详细介绍如何使用MATLAB进行系统辨识与模型建模,并探讨其在实际应用中的意义和局限性。
一、系统辨识的基本原理1.1 系统辨识的概念及意义系统辨识是指通过对已有数据的分析和处理,建立描述该系统行为的数学模型的过程。
在实际应用中,系统辨识可以帮助我们了解系统的结构和特性,预测系统的行为,并为系统控制、优化提供依据。
1.2 系统辨识的方法系统辨识的方法主要包括参数辨识和结构辨识两种。
参数辨识是指通过拟合已知数据,确定数学模型中的参数值的过程。
常用的参数辨识方法有最小二乘法、极大似然估计法等。
结构辨识是指通过选择适当的模型结构和参数化形式,使用已知数据确定模型结构的过程。
常用的结构辨识方法有ARX模型、ARMA模型等。
二、MATLAB在系统辨识中的应用2.1 数据准备与预处理在进行系统辨识之前,我们首先需要准备好相关的数据。
数据的质量和数量对系统辨识的结果有着重要的影响,因此在数据准备阶段应尽量确保数据的准确性和完整性。
MATLAB提供了丰富的数据处理和分析函数,可用于数据预处理、数据清洗、数据归一化等操作,以提高数据的质量和可用性。
2.2 参数辨识的实现参数辨识是系统辨识的重要步骤之一,其主要目标是通过适当的数学模型拟合已知数据,确定模型中的参数值。
在MATLAB中,我们可以使用curve fitting工具箱中的函数,如fit、cftool等,来进行参数辨识的实现。
同时,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=。
目录1建立数学模型的方法 (1)1.1机理建模 (1)1.2系统辨识 (1)1.3机理建模和辨识相结合的建模法 (1)2系统辨识的基本概念 (1)2.1L.A.Zadeh定义 (1)2.2P.Eykhoff定义 (2)2.3L.Ljung定义 (2)3系统辨识的内容及步骤 (2)3.1获取验前知识、明确辨识目的 (2)3.2实验设计 (3)3.3确定模型结构 (3)3.4参数估计 (4)3.5模型验证 (4)4系统辨识工具箱基本理论 (4)4.1观测数据的获取 (5)4.2数据预处理 (5)4.3模型结构的选择 (5)4.4参数估计 (5)4.5模型检验与动态仿真 (6)5基于系统辨识工具箱的电动车机器人辨识仿真 (6)5.1观测数据的获取 (6)5.2数据预处理 (6)5.3模型结构的选择和阶次确定 (8)5.4确定模型参数 (9)5.5模型阶数验证和模型验证 (9)6结论及总结 (12)参考文献 (13)附:程序 (14)1建立数学模型的方法模型就是把关于实际系统的本质的部分信息简缩成有用的描述形式,它的主要功能是模拟实际系统的行为,而不是去描述实际系统的实际结构。
模型可以分为物理模型和数学模型。
建立数学模型一般有机理建模、黑箱建模和灰箱建模三种方法。
1.1机理建模又称理论建模或白箱建模,根据所研究系统的物理机理,利用物质和能量的守恒性以及连续性原理、有关物理定律(牛顿定理、流体力学、热力学定律等),考虑物理量之间的关系,推导出数学模型。
此方法适用于简单系统的建模,通常能达到精度要求。
1.2系统辨识又称试验建模或黑箱建模,对于一个已存在的实际系统,根据观察,测量并记录得到的输入输出数据,经过一些加工处理,求出非参数或参数模型,这种建模方法就是系统辨识。
这种方法不需要深入了解过程的机理,需要的先验知识少,能提供由其他方法难以建立的环境或噪声的动态特性。
1.3机理建模和辨识相结合的建模法又称灰箱建模,对系统进行数学建模时,机理已知的部分采用理论建模方法,机理未知的部分采用辨识建模的方法,发挥两种方法各自的优点,建立更为精确的数学模型。
系统辨识与自适应控制matlab仿真概述说明1. 引言1.1 概述在控制系统中,系统辨识与自适应控制是两个重要的研究领域。
系统辨识是指通过实验数据来推断和建立数学模型,以揭示被控对象的动态特性和行为规律。
而自适应控制则是基于辨识模型预测,并根据外部环境变化及时调整控制策略,以实现对系统稳定性、鲁棒性和性能的优化。
本文将围绕系统辨识与自适应控制在Matlab仿真环境中的应用展开讨论。
首先,我们会介绍系统辨识和自适应控制的基本概念以及其在工程领域中的重要性。
然后,我们会详细介绍常用的系统辨识方法和自适应控制算法,并通过具体示例来说明它们的实际应用价值。
最后,我们会重点讲解如何利用Matlab进行仿真实验,并分享一些Matlab编程与仿真技巧。
1.2 文章结构本文共分为五个主要部分:引言、系统辨识、自适应控制、Matlab仿真以及结论与展望。
在引言部分,我们将介绍文章的背景和目的,以及整体结构安排。
接下来的三个部分将重点讨论系统辨识和自适应控制两个主题,并具体阐述各自的概念、方法、应用以及仿真结果分析。
最后一部分则是对全文进行总结回顾,并展望未来研究方向和发展趋势。
1.3 目的本文旨在通过对系统辨识与自适应控制在Matlab仿真环境中的研究与应用进行概述说明,帮助读者深入了解该领域的基本理论和实践技巧。
同时,在介绍相关概念和算法的同时,我们也希望能够启发读者思考并提出对未来研究方向和发展趋势的建议。
通过本文的阅读,读者将能够全面了解系统辨识与自适应控制在工程领域中的重要性,并学会利用Matlab进行仿真实验,从而加深对这一领域的理解与认知。
2. 系统辨识2.1 系统辨识概念系统辨识是指通过观测系统输入与输出之间的关系,以及对系统内部状态的估计,来建立数学模型以反映实际物理系统行为的过程。
在控制工程领域中,系统辨识是一种常用的方法,用于从已知输入与输出数据中推断出未知系统的特性和参数。
在系统辨识过程中,我们通常假设被研究的系统是线性、时不变且具有固定结构的。
系统辨识与自适应控制Matlab仿真代码一、引言系统辨识与自适应控制是现代控制理论的重要分支之一,它能够对未知的系统进行建模和控制,具有广泛的应用前景。
Matlab作为一款强大的数学软件,具有丰富的工具箱和仿真功能,可以方便地进行系统辨识和自适应控制的仿真实验。
本文将介绍如何使用Matlab进行系统辨识和自适应控制的仿真实验。
二、系统辨识系统辨识是指根据系统的输入和输出数据,推导出系统的数学模型。
在Matlab中,可以使用System IdentificationToolbox进行系统辨识。
下面以一个简单的例子来说明如何使用System Identification Toolbox进行系统辨识。
例:假设有一个未知的二阶系统,其输入为正弦信号,输出为系统的响应。
采样频率为10 0Hz,采样时间为10秒。
输入信号的频率为2Hz,幅值为1。
1. 生成输入信号在Matlab中,可以使用如下代码生成输入信号:t = 0:0.01:10; % 采样时间u = sin(2*pi*2*t); % 2Hz正弦信号2. 生成输出信号假设系统的传递函数为:G(s) = K / (s^2 + 2ζωs + ω^2)其中K、ζ、ω为未知参数。
可以使用如下代码生成输出信号:K = 1;zeta = 0.2;omega = 2*pi*2;sys = tf(K, [1 2*zeta*omega omega^2]);y = lsim(sys, u, t);3. 进行系统辨识使用System Identification Toolbox进行系统辨识,可以得到系统的传递函数模型:G(s) = 0.9826 / (s^2 + 0.7839s + 12.57)其中,0.9826为K的估计值,0.7839为2ζω的估计值,12.57为ω^2的估计值。
可以看出,估计值与实际值比较接近。
三、自适应控制自适应控制是指根据系统的输入和输出数据,实时调整控制器的参数,以达到控制系统稳定的目的。
系统辨识及其matlab仿真)系统辨识是指利用已知的输入和输出数据,通过建立数学模型来描述和预测系统行为的过程。
它在工程领域中具有广泛的应用,包括控制系统设计、信号处理、通信系统等领域。
系统辨识可以分为参数辨识和非参数辨识两种方法。
参数辨识是指通过确定系统模型的参数来描述系统行为,常用的方法有最小二乘法、极大似然法等。
非参数辨识则是通过估计系统的输入输出关系函数来描述系统,常用的方法有频域方法、时域方法等。
在系统辨识过程中,噪声是一个不可忽视的因素。
噪声的存在会对辨识结果产生影响,因此需要对噪声进行建模和处理。
常用的噪声模型有高斯白噪声模型、AR模型、MA模型等。
在实际应用中,通常需要根据实际情况选择合适的噪声模型来进行系统辨识。
Matlab是一种常用的数学软件,它提供了丰富的工具箱和函数,可以方便地进行系统辨识的仿真。
在Matlab中,可以使用System Identification Toolbox进行系统辨识的建模和仿真。
该工具箱提供了多种辨识算法,包括线性和非线性的参数辨识方法。
在使用Matlab进行系统辨识仿真时,首先需要准备好输入输出数据。
对于已知系统,可以通过实验或者模拟得到系统的输入输出数据。
对于未知系统,可以通过对系统加入一定的激励信号,然后获取系统的响应数据来进行辨识。
接下来,可以使用Matlab提供的辨识函数进行系统辨识的建模。
对于线性系统,可以使用ARX模型、ARMAX模型、OE模型等进行建模。
对于非线性系统,可以使用非线性ARX模型、非线性ARMAX模型等进行建模。
这些辨识函数可以根据输入输出数据自动估计系统的参数,并生成系统模型。
在得到系统模型后,可以利用仿真工具对系统进行仿真分析。
例如,可以通过对系统模型进行输入信号的仿真,得到系统的输出响应,并与实际数据进行比较,验证辨识结果的准确性。
总之,系统辨识及其Matlab仿真是一种重要的工程方法,可以帮助我们理解和预测系统的行为。
【1】随机序列产生程序【2】白噪声产生程序【3】M序列产生程序【4】二阶系统一次性完成最小二乘辨识程序【5】实际压力系统的最小二乘辨识程序【6】递推的最小二乘辨识程序【7】增广的最小二乘辨识程序【8】梯度校正的最小二乘辨识程序【9】递推的极大似然辨识程序【10】Bayes辨识程序【11】改进的神经网络MBP算法对噪声系统辨识程序【12】多维非线性函数辨识程序的Matlab程序【13】模糊神经网络解耦Matlab程序【14】F-检验法部分程序【1】随机序列产生程序A=6;x0=1;M=255;for k=1:100x2=A*x0;x1=mod (x2,M);v1=x1/256;v(:,k)=v1;x0=x1;v0=v1;endv2=vk1=k;%grapherk=1:k1;plot(k,v,k,v,'r');xlabel('k'), ylabel('v');title('(0,1)均匀分布的随机序列') 【2】白噪声产生程序A=6; x0=1; M=255; f=2; N=100;for k=1:Nx2=A*x0;x1=mod (x2,M);v1=x1/256;v(:,k)=(v1-0.5)*f;x0=x1;v0=v1;endv2=vk1=k;%grapherk=1:k1;plot(k,v,k,v,'r');xlabel('k'), ylabel('v');title('(-1,+1)均匀分布的白噪声')【3】M序列产生程序X1=1;X2=0;X3=1;X4=0; %移位寄存器输入Xi初T态(0101),Yi为移位寄存器各级输出m=60; %置M序列总长度for i=1:m %1#Y4=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%绘图i1=ik=1:1:i1;plot(k,U,k,U,'rx')xlabel('k')ylabel('M序列')title('移位寄存器产生的M序列')【4】二阶系统一次性完成最小二乘辨识程序%FLch3LSeg1u=[-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)] %给样本矩阵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 PARAMETERSa1=c(1), a2=c(2), b1=c(3), b2=c(4) %从中分离出并显示a1 、a2、b1、b2%End【5】实际压力系统的最小二乘辨识程序%FLch3LSeg2clear%工作间清零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,并显示%logP=-alpha*logV+logbeita=[-logV,1][alpha,log(beita)]'=HL*sita%注释P、V之间的关系for i=1:6;%循环变量的取值为从1到6Z(i)=log(P(i));%赋系统的输出采样值end%循环结束ZL=Z'%给zL赋值HL=[-log(V(1)),1;-log(V(2)),1;-log(V(3)),1;-log(V(4)),1;-log(V(5)),1;-log(V(6)),1] %给HL赋值%calculating parameters%计算参数c1=HL'*HL; c2=inv(c1); c3=HL'*ZL; c4=c2*c3%计算%Separation of Parameters%分离变量alpha=c4(1) % 为c4的第1个元素beita=exp(c4(2)) % 为以自然数为底的c4的第2个元素的指数【6】递推的最小二乘辨识程序%FLch3RLSeg3clear%清理工作间变量L=15;% M序列的周期y1=1;y2=1;y3=1;y4=0;%四个移位积存器的输出初始值for i=1;%开始循环,长度为Lx1=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)=-0.03;%如果M序列的值为"1"时,辨识的输入信号取“-0.03”else u(i)=0.03;%当M序列的值为"0"时,辨识的输入信号取“0.03”end%小循环结束y1=x1;y2=x2;y3=x3;y4=x4;%为下一次的输入信号做准备end%大循环结束,产生输入信号ufigure(1);%第1个图形stem(u),grid on%以径的形式显示出输入信号并给图形加上网格z(2)=0;z(1)=0;%取z的前两个初始值为零for k=3:15;%循环变量从3到15z(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2);%给出理想的辨识输出采样信号end%RLS递推最小二乘辨识c0=[0.001 0.001 0.001 0.001]';%直接给出被辨识参数的初始值,即一个充分小的实向量p0=10^6*eye(4,4);%直接给出初始状态P0,即一个充分大的实数单位矩阵E=0.000000005;%相对误差E=0.000000005c=[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); %开始求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%显示被辨识参数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到15plot(i,a1,'r',i,a2,':',i,b1,'g',i,b2,':') %画出a1,a2,b1,b2的各次辨识结果title('Parameter Identification with Recursive Least Squares Method')%图形标题figure(3); %第3个图形i=1:15; %横坐标从1到15plot(i,ea1,'r',i,ea2,'g',i,eb1,'b',i,eb2,'r:') %画出a1,a2,b1,b2的各次辨识结果的收敛情况title('Identification Precision') %图形标题【7】增广的最小二乘辨识程序%FLch3ELSeg4clearL=60;%四位移位积存器产生的M序列的周期y1=1;y2=1;y3=1;y4=0;%四个移位积存器的输出初始值for i=1;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”endy1=x1;y2=x2;y3=x3;y4=x4;%为下一次的输入信号作准备endfigure(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);%计算输入信号与随机噪声信号的相关系数r=R(1,2);%取出互相关系数u%显示输入型号v%显示噪声型号z=zeros(7,60);zs=zeros(7,60);zm=zeros(7,60);zmd=zeros(7,60);%输出采样、不考虑噪声时系统输出、不考虑噪声时模型输出、模型输出矩阵的大小z(2)=0;z(1)=0;zs(2)=0;zs(1)=0;zm(2)=0;zm(1)=0;zmd(2)=0;zmd(1)=0;%给输出采样、不考虑噪声时系统输出、不考虑噪声时模型输出、模型输出赋初值%增广递推最小二乘辨识c0=[0.001 0.001 0.001 0.001 0.001 0.001 0.001]';%直接给出被辨识参数的初始值,即一个充分小的实向量p0=10^6*eye(7,7);%直接给出初始状态P0,即一个充分大的实数单位矩阵E=5.0e-15;%取相对误差Ec=[c0,zeros(7,59)];%被辨识参数矩阵的初始值及大小e=zeros(7,60);%相对误差的初始值及大小for k=3:60; %开始求Kz(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2)+v(k)-v(k-1)+0.2*v(k-2);%系统在M序列输入下的输出采样信号h1=[-z(k-1),-z(k-2),u(k-1),u(k-2),v(k),v(k-1),v(k-2)]';%为求K(k)作准备x=h1'*p0*h1+1; x1=inv(x); k1=p0*h1*x1; %Kd1=z(k)-h1'*c0; c1=c0+k1*d1;%辨识参数czs(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2);%系统在M序列的输入下不考虑扰动时的输出响应zm(k)=[-z(k-1),-z(k-2),u(k-1),u(k-2)]*[c1(1);c1(2);c1(3);c1(4)];%模型在M序列的输入下不考虑扰动时的的输出响应zmd(k)=h1'*c1;%模型在M序列的输入下的的输出响应e1=c1-c0;e2=e1./c0; %求参数的相对变化e(:,k)=e2;c0=c1;%给下一次用c(:,k)=c1;%把辨识参数c 列向量加入辨识参数矩阵p1=p0-k1*k1'*[h1'*p0*h1+1];%find p(k)p0=p1;%给下次用if e2<=E break;%若收敛情况满足要求,终止计算end%判断结束end%循环结束c, e, %显示被辨识参数及参数收敛情况z,zmd %显示输出采样值、系统实际输出值、模型输出值%分离变量a1=c(1,; a2=c(2,; b1=c(3,; b2=c(4,;%分离出a1、a2、b1、b2d1=c(5,; d2=c(6,; d3=c(7,; %分离出d1、d2、d3ea1=e(1,; ea2=e(2,; eb1=e(3,; eb2=e(4,; %分离出a1、a2、b1、b2的收敛情况ed1=e(5,; ed2=e(6,; ed3=e(7,; %分离出d1 、d2 、d3的收敛情况figure(2);%画第二个图形i=1:60;plot(i,a1,'r',i,a2,'r:',i,b1,'b',i,b2,'b:',i,d1,'g',i,d2,'g:',i,d3,'g+')%画出各个被辨识参数title('Parameter Identification with Recursive Least Squares Method')%标题figure(3);%画出第三个图形i=1:60;plot(i,ea1,'r',i,ea2,'r:',i,eb1,'b',i,eb2,'b:',i,ed1,'g',i,ed2,'g:',i,ed2,'r+')%画出各个参数收敛情况title('Identification Error')%标题%response%响应figure(4);%画出第四个图形subplot(4,1,1); %画出第四个图形中的四个子图的第一个子图i=1:60;plot(i,zs(i),'r')%画出被辨识系统在没有噪声情况下的实际输出响应subplot(4,1,2); %画出第四个图形中的四个子图的第二个子图i=1:60;plot(i,z(i),'g')%画出被辨识系统的采样输出响应subplot(4,1,3); %画出第四个图形中的四个子图的第三个子图i=1:60;plot(i,zmd(i),'b')%画出模型含有噪声的输出响应subplot(4,1,4); %画出第四个图形中的四个子图的第四个子图i=1:60;plot(i,zm(i),'b')%画出模型去除噪声后的输出响应【8】梯度校正的最小二乘辨识程序%FLch4GAeg1clearu=[-1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1];y=[0,-2,-6,-7,-7,-3,5,7,3,-1,5,3,-5,-3,1,-1,1,-5,-7,-7];%画出u和y图形figure(1), subplot(2,1,1), stem(u), subplot(2,1,2), stem(y), hold onk=1:20plot(k,y)%给出初始值h1=[-1,0,0]';h2=[-1,-1,0]';g=[0,0,0]';I=[1,0,0;0,1/2,0;0,0,1/4];h=[h1,h2,zeros(3,16)];%计算输入样本数据h(k)for k=3:18h(:,k)=[u(k),u(k-1),u(k-2)]';end%计算出权矩阵R(k)和估计值gfor k=1:18a=h(1,k)^2+(h(2,k)^2)/2+(h(3,k)^2)/4;%按照式(4.45)开始计算权矩阵a1=1/a;R=a1*I;%按照式(4.45)计算出权矩阵g(:,k+1)=g(:,k)+R*h(:,k)*(y(k+1)-h(:,k)'*g(:,k));%按照式(4.44)计算脉冲响应估计值end%画出图形g1=g(1,; g2=g(2,; g3=g(3,;figure(2)k=1:19;subplot(121)plot(k,g1,'r',k,g2,'g',k,g3,'b'),grid on%计算模型输出值ym及系统输出与模型输出之间的误差Eyfor k=1:18ym(k)=h(:,k)'*g(:,k); Ey(k)=y(k+1)-ym(k);endk=1:18;subplot(122)plot(k,Ey),grid ong, ym, Ey %显示脉冲响应估计值、模型输出值及系统输出与模型输出之间的误差figure(3)%画出脉冲响应曲线x=0:1:3;y=[0,g(1,18),g(2,18),g(3,18)];xi=linspace(0,3);yi=interp1(x,y,xi,'cubic');%三次插值plot(x,y,'o',xi,yi,'m'),grid on%画出脉冲响应估计值及其三次插值曲线【9】递推的极大似然辨识程序clear %清零a(1)=1;b(1)=0;c(1)=1;d(1)=0;u(1)=d(1);z(1)=0;z(2)=0; %初始化for i=2:1200 %产生m序列u(i)a(i)=xor(c(i-1),d(i-1));b(i)=a(i-1);c(i)=b(i-1);d(i)=c(i-1);u(i)=d(i);endu; %若取去‘;’可以在程序运行中观测到m序列v=randn(1200,1); %产生正态分布随机数V=0; %计算噪声方差for i=1:1200V=V+v(i)*v(i);endV1=V/1200;for k=3:1200 %根据v和u计算zz(k)=1.2*z(k-1)-0.6*z(k-2)+u(k-1)+0.5*u(k-2)+v(k)-v(k-1)+0.2*v(k-2);endo1=0.001*ones(6,1);p0=eye(6,6); %赋初值zf(1)=0.1;zf(2)=0.1;vf(2)=0.1;vf(1)=0.1;uf(2)=0.1;uf(1)=0.1;%迭代计算参数值和误差值for k=3:1200h=[-z(k-1);-z(k-2);u(k-1);u(k-2);v(k-1);v(k-2)];hf=h;K=p0*hf*inv(hf'*p0*hf+1);p=[eye(6,6)-K*hf']*p0;v(k)=z(k)-h'*o1;o=o1+K*v(k) ;p0=p;o1=o;a1(k)=o(1);a2(k)=o(2);b1(k)=o(3);b2(k)=o(4);d1(k)=o(5);d2(k)=o(6);e1(k)=abs(a1(k)+1.2);e2(k)=abs(a2(k)-0.6);e3(k)=abs(b1(k)-1.0);e4(k)=abs(b2(k)-0.5);e5(k)=abs(d1(k)+1.0);e6(k)=abs(d2(k)-0.2);zf(k)=z(k)-d1(k)*zf(k-1)-d2(k)*zf(k-2);uf(k)=u(k)-d1(k)*uf(k-1)-d2(k)*uf(k-2);vf(k)=v(k)-d1(k)*vf(k-1)-d2(k)*vf(k-2);hf=[-zf(k-1);-zf(k-2);uf(k-1);uf(k-2);vf(k-1);vf(k-2)];endo1 %若取去‘;’可以在程序运行中观测到参数V1%绘图subplot(4,1,1)k=1:1200;plot(k,a1,'k:',k,a2,'b',k,b1,'r',k,b2,'m:',k,d1,'g',k,d2,'k');xlabel('k')ylabel('parameter')legend('a1=-1.2,','a2=0.6','b1=1.0','b2=0.5','d1=-1.0','d2=0.2'); %图标炷title('The parameter idendification of the RML');endsubplot(4,1,2)k=1:1200;plot(k,e1,'k',k,e2,'b',k,e3,'r',k,e4,'m',k,e5,'g',k,e6,'k');xlabel('k'); ylabel('error'); %title('误差曲线')endsubplot(4,1,3)k=1:1200;plot(k,u);xlabel('k'); ylabel('input'); %title('系统输入信号')endsubplot(4,1,4)k=1:1200;plot(k,v);xlabel('k'); ylabel('random noise'); %title('系统所加的随机噪声') end。
系统辨识理论及matlab仿真
系统辨识是一门评估和改进系统性能的研究领域,它利用外部观测数据对系统进行建模,使用这种模型来识别系统行为以及建议改进措施。
它结合了计算机科学、工程学、统计学和应用数学等多种学科的方法。
系统辨识的方法可以用于分析机器人系统、有限元素模型、分散系统和非线性系统等。
系统辨识理论是现代工程中最重要的技术,它能够有效地分析和模拟系统,以解决重大工程挑战。
系统辨识理论的基础可以回溯到20世纪40年代,当时大量研究的重点在于控制系统的设计与形成。
随着进步,它拓展到多种应用,其中包括一般系统建模和优化,以及系统健康监测,智能控制系统,复杂过程建模等等。
Matlab是一种基于矩阵的编程语言,它可以提供强大的工具来支持系统辨识理论的应用。
利用Matlab,可以非常方便地实现模型建模、数据处理、数值求解以及可视化等功能。
此外,它还提供了大量预定义函数,可以极大地简化系统辨识理论中所需要实现的功能,如参数估计、优化、数据验证等。
系统辨识理论和Matlab仿真在工程实践中应用十分广泛,其中最值得一提的有:
(1)机器人控制:利用系统辨识理论和Matlab仿真,可以对机器人运动特性进行模型建模,并实现复杂的运动控制;
(2)流体动力学:利用系统辨识理论和Matlab仿真,可以对流体动力学进行建模和模拟,以便改善和优化系统性能;
(3)模糊控制:利用系统辨识理论和Matlab仿真,可以实现模糊控制系统的建模和仿真,用于实现智能控制等。
系统辨识理论和Matlab仿真的研究成果不仅可以改善系统性能,还可以用于展示系统原理及其实现。
以上是我关于系统辨识理论及Matlab仿真的研究结果及其应用。
经过以上介绍,可以看出系统辨识理论及Matlab仿真在工程应
用中有重要的作用,它们为解决复杂工程问题提供了可行的解决方案。
然而,在实际应用过程中,系统辨识理论及Matlab仿真也存在一定
的不足,比如误差控制方面的困难,这就要求我们不断改进和完善理论和技术,以提高系统的有效性和可靠性。