Matlab_系统辨识_应用例子

合集下载

基于MATLAB系统辨识工具的系统辨识

基于MATLAB系统辨识工具的系统辨识
为: A ( z 。 。 ) y ( k ) = z B ( z ) u ( k ) + t ( z ) E ( k ) ( 1 )
图 1数 据 加 载 界 面
式中, 分 别为系统 的输 入 、 输 出 和系统 随机扰 动 , 根 据系统 参数 和控 制量取值 的不同 ,可将模 型分 为 自回归模 型 ( A R模 型) 、 滑动平均模 型 ( M A模 型 ) 、 自回归滑动平 均模型 ( A R M A模 型) 、 带控制量 的 自回归模型 ( C A R模型也称 A R X模型 ) 、 带控制 量的 自回归滑动平均模型( C A R MA模型或称为 A R MA X模 型) 和 带控 制量 的 自同 归积分 滑动 平均 模 型 ( C A R I MA模 型 或称 为
典 型的线性 S I S ( ) 系统 , 此 系统 包含 1 0 0 0个输入输 m数 据 , 现在 要 根据 系统 的输 入输出数据找出描述 系统特性的最件模型。
j 毛 曩:
做任何分析 . 只需要记 录在人 为输 入作 用下的输 } H 响应 , 或正常 运 行时的输 入 、 输 记录的数据 , 就能建立动态 系统 的数学模 型 ( “ 黑箱法 ” ) 。埘于 已知描述 系统 的数学方程形式( 常微分或差分 方程) 的情况 , 也可以用此 具计算数学方程 的各项系数 , d 此确
ARI MAX ) 。
( 2 ) 导 人数 据 到 系统 辨识 1 二 具箱 G U I : 在 GU I 罔形 界 面 中点
终 得 到 最 优模 型 的过 程 .
2 墓 子 MAi L AB 识 工 主 加 热 系 统
!毫; l 、 l l - 一 : ∞ 一 : -
组 数据正 是上 面所说 加热 系统 的输 入和输 出数据 u 2为输 入 ,

利用Matlab进行系统辨识的技术方法

利用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进行系统辨识的技术方法在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在工程设计中的应用与实例

MATLAB在工程设计中的应用与实例概述:MATLAB(矩阵实验室)是一种高级的数值计算和数据可视化软件,广泛应用于科学、工程和工业。

它的功能强大,可以通过编写算法和脚本来进行数据处理、模拟和分析。

在工程设计中,MATLAB的应用非常广泛,可以帮助工程师解决各种实际问题。

本文将介绍MATLAB在工程设计中的应用,并结合实例进行详细说明。

一、信号处理与滤波器设计在工程设计中,经常需要处理来自传感器或其他设备的信号。

MATLAB提供了丰富的信号处理工具箱,可以进行信号滤波、频域分析、谱估计等一系列操作。

例如,在音频处理中,我们可以使用MATLAB对音频信号进行去噪、降噪、特征提取等操作,以改善音频质量。

另外,在无线通信中,信号调制、解调和通道估计等操作也需要使用到MATLAB的信号处理工具箱。

二、控制系统设计与仿真控制系统设计是工程设计的重要组成部分,它涉及到自动化、机械、电子等多个领域。

MATLAB提供了专业的控制系统工具箱,可以进行控制系统建模、系统辨识、控制器设计等工作。

例如,在飞行器的姿态控制中,我们可以使用MATLAB进行系统模型的建立,并设计合适的控制器来实现飞行器的稳定飞行。

此外,MATLAB还支持对控制系统进行仿真,可以通过模拟系统动态响应来验证设计的效果。

三、电路与电子设计在电路与电子设计中,MATLAB可以辅助工程师进行电路分析、模拟和优化。

MATLAB提供了电路设计工具箱,包括电路拓扑分析、参数优化、电路模型生成等功能。

例如,在功率电子领域,我们可以使用MATLAB对电子变流器进行建模,并通过优化算法找到最佳的拓扑结构,以提高功率转换效率。

此外,MATLAB还支持混合信号电路设计和可编程逻辑器件(FPGA)设计等领域。

四、结构力学与有限元分析结构力学是工程设计的重要组成部分,它涉及到物体的力学性质和结构响应。

MATLAB提供了结构力学分析工具箱和有限元分析工具箱,可以进行静力学和动力学分析、结构模态分析、应力/应变分布等工作。

使用Matlab技术进行系统辨识的基本方法

使用Matlab技术进行系统辨识的基本方法

使用Matlab技术进行系统辨识的基本方法概述:系统辨识是指通过对已知输入输出数据的分析和处理,推断出系统的动态性质和数学模型的过程。

在科学研究、工程设计和控制应用中,系统辨识扮演着重要的角色。

而Matlab作为一种强大的数值计算和数据分析软件,为系统辨识提供了便利且高效的工具。

本文将介绍使用Matlab进行系统辨识的基本方法,并结合实例进行讲解。

一、数据采集与准备在进行系统辨识之前,首先需要采集到对应的输入输出数据。

一般来说,输入信号是已知的,可以通过外部激励或者系统自身的变动来获取;而输出信号则是根据输入信号通过系统响应得到的。

在采集数据时,需要注意数据的质量和采样频率的选择。

二、数据预处理在进行系统辨识之前,数据通常需要进行一些预处理,以去除噪声、平滑数据和调整时间序列等。

这可以通过Matlab中的数据处理函数和滤波器实现。

例如,可以使用高斯滤波器对数据进行平滑处理,或者使用降噪算法去除不必要的噪声。

三、参数估计参数估计是系统辨识的核心步骤之一,它通过对已知数据进行分析和处理,推断出系统的数学模型和参数。

在Matlab中,有多种方法和工具可供选择,如最小二乘法、最大似然法、系统辨识工具箱等。

这些工具可以根据不同的模型和数据类型灵活选择,并提供相应的算法和函数。

四、模型验证与优化根据估计得到的系统模型和参数,可以使用Matlab进行模型验证和优化。

模型验证是指将估计得到的模型与真实系统进行对比,检验其拟合程度和预测能力。

如果模型的拟合程度较差,则需要对参数进行调整和优化,以提高模型的准确性和稳定性。

五、模型预测与应用在系统辨识完成之后,可以使用得到的模型进行系统预测和应用。

通过对未知输入信号进行预测,可以得到相应的输出响应,进而实现对系统动态性质的分析和控制。

Matlab提供了丰富的预测和应用函数,例如时域模拟、频域分析、控制系统设计等,可以满足不同应用场景的需求。

六、案例分析为了更好地理解和掌握使用Matlab进行系统辨识的基本方法,下面通过一个简单的案例进行分析。

系统辨识理论及matlab仿真

系统辨识理论及matlab仿真

系统辨识理论及matlab仿真现今,随着电子技术的发展,在计算机上实现系统辨识问题变得日益重要。

因此,本文将介绍系统辨识理论及matlab仿真。

要完成这一任务,首先必须掌握辨识过程中涉及到的有关知识,然后才能对系统进行辨识,找出系统的主要特征,从而判断系统属于何种类型。

为了使读者易于接受并容易理解这些知识,在这里给出了一个简化的系统辨识方法。

对该方法的应用还需读者结合系统的具体情况和现有的设备仪器等来分析。

这里仅举例说明辨识过程。

1。

为了提高系统辨识的效率,一般采用的是分层次的方法,即:( 1)层1:列出所要辨识的所有系统元件。

( 2)层2:给出每个系统元件的状态变量值,其含义就是它的各个可能状态;( 3)层3:指出系统元件某一状态变量值与其他状态变量值之间的关系式。

如果在层2和层3之间加入一个自学习控制过程,则被辨识系统可以简化为两部分:前面提到的第1和第2部分。

2。

列出全部系统元件的状态变量,这里不难看出每一层次的系统元件都有它们各自的可能状态。

同时也可列出最坏情况下所有元件的状态变量,即:。

由状态变量与可能状态,可以很方便地推导出系统的属性值,进而确定该系统属于何种类型。

下面将分别作以介绍。

3。

系统根据可能状态组成的三角形可以看成三种可能的系统结构:( 1)原型:简单系统结构,有3个独立元件,一个是原点,另两个是控制点,相当于节点,且在原点处可以设置任意一个输入,也可以设置任意一个输出。

( 2)星型结构:星型结构可以看成四个独立元件,有一个或多个中心节点,每个节点都可以被设置成输入或输出,且可以沿连线选择任意两个元件做连接,若这样选择,则系统可以看成环状结构。

4。

基于系统结构的辨识方法5。

基于系统状态变量的辨识方法7。

基于状态变量的辨识方法。

把系统的状态空间描述为状态向量空间,把描述系统的状态转移矩阵与其描述的状态向量组成一个多项式,利用矩阵的运算来辨识系统,在大多数情况下都可以得到比较满意的辨识结果。

如何在MATLAB中进行系统辨识

如何在MATLAB中进行系统辨识

如何在MATLAB中进行系统辨识引言:在系统辨识中,我们通常会使用数据来推导出系统的数学模型,进而对系统进行建模和预测。

MATLAB作为一种强大的数值计算和分析工具,提供了丰富的系统辨识工具包,能够帮助我们实现这一目标。

本文将介绍如何使用MATLAB进行系统辨识,包括数据预处理、模型选择、参数估计等内容。

一、数据预处理系统辨识的第一步是数据预处理,即对采集到的数据进行处理和清洗,以提高后续建模和分析的准确性。

常见的数据预处理技术包括去除异常值、平滑数据、采样率调整等。

在MATLAB中,我们可以使用一系列内置的函数和工具箱来完成这些任务。

例如,使用"findoutliers"函数可以检测并去除异常值,使用"smoothdata"函数可以平滑数据,使用"resample"函数可以进行采样率调整等。

二、模型选择在系统辨识中,我们需要选择适合的数学模型来描述系统的行为。

常用的系统模型包括线性模型、非线性模型、时变模型等。

在MATLAB中,我们可以使用"sysident"工具箱中的函数来进行模型选择。

其中最常用的方法是ARX模型和ARMAX模型。

ARX模型适用于仅包含输入和输出的线性系统辨识,而ARMAX 模型适用于包含自回归项和移动平均项的线性系统辨识。

根据实际情况和需求,选择适合的模型进行建模。

三、参数估计参数估计是系统辨识中的关键步骤,其目的是通过观测数据来估计系统模型中的参数。

在MATLAB中,我们可以使用"arx"和"armax"函数进行参数估计。

这些函数将原始观测数据作为输入,并根据选择的模型类型进行系统参数的估计。

具体的参数估计方法包括最小二乘法、极大似然法、递推最小二乘法等。

根据系统模型和实际需求,选择合适的参数估计方法进行系统参数的估计。

四、模型验证模型验证是系统辨识中的重要环节,其目的是验证建立的系统模型是否能够准确地描述观测数据。

(完整版)系统全参数辨识matlab实现

(完整版)系统全参数辨识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,继续循环。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例1、考虑仿真对象)()2(5.0)1()2(7.0)1(5.1)(k v k u k u k z k z k z +-+-=-+-- 其中,)(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 +-+-=-+-+设输入信号的取值是从k =1到k =16的M 序列,则待辨识参数LSθˆ为LS θˆ=(T T -ΦΦΦ1)z 。

其中,被辨识参数LSθˆ、观测矩阵Φ的表达式为: ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=2121ˆb b a a LS θ (3)(4)(16)z z z ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦z (2)(1)(2)(1)(3)(2)(3)(2)(15)(14)(15)(14)z z u u z z u u z z u u --⎡⎤⎢⎥--⎢⎥Φ=⎢⎥⎢⎥--⎣⎦ 程序框图如图1所示。

Matlab 仿真程序如下:%二阶系统的最小二乘一次完成算法辨识程序,文件名:LS.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)] %给样本矩阵 赋值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、LSb2%End程序运行结果:>>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 =0 0 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.1949 0.9386 -1.0000 1.00004.6352 3.1949 -1.0000 -1.00006.2165 4.6352 1.0000 -1.00005.58006.2165 1.0000 1.0000ZL =[ 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]Tc =[ -1.5000,0.7000,1.0000,0.5000]Ta1 = -1.5000a2 = 0.7000b1 = 1.0000b2 =0.5000>>-11-1010-10010从仿真结果表1可以看出,由于所用的输出观测值没有任何噪声成分,所以辨识结果也无任何误差。

例2 根据热力学原理,对给定质量的气体,体积V 与压力P 之间的关系为βα=PV ,其中α和β为待定参数。

经实验获得如下一批数据, V 的单位为立方英寸,P 的单位为帕每平方英寸。

V 54.3 61.8 72.4 88.7 118.6 194.0 P 61.2 49.5 37.6 28.4 19.2 10.1 试用最小二乘一次完成算法确定参数α和β。

首先要写出系统的最小二乘表达式。

为此,把体积V 与压力P 之间的关系βα=PV 改为对数关系,即,βαlog log log +-=V P 。

此式与式)()()(k e k k z +=θh τ,对比可得:P log )(=k z ,]1log [)(Vh -=k τ,τβα]log [=θ。

例2的Matlab6.0程序如下。

%实际压力系统的最小二乘辨识程序,文件名:LS2.mclear %工作间清零V=[54.3,61.8,72.4,88.7,118.6,194.0]',P=[61.2,49.5,37.6,28.4,19.2,10.1]' %赋初值并显示V 、P %logP=-alpha*logV+logbeita=[-logV ,1][alpha,log(beita)]'=HL*sita %注释P 、V 之间的关系for i=1:6; Z(i)=log(P(i)); %循环变量的取值为从1到6,系统的采样输出赋值End %循环结束ZL=Z' % z L 赋值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] %H L 赋值%Calculating Parametersc1=HL'*HL; c2=inv(c1); c3=HL'*ZL; c4=c2*c3 %计算被辨识参数的值%Separation of Parametersalpha=c4(1) %α为c4的第一个元素beita=exp(c4(2)) %β为以自然数为底的c4的第二个元素的指数程序运行结果:V = [54.3000, 61.8000, 72.4000, 88.7000, 118.6000, 194.0000]τP = [61.2000, 49.5000, 37.6000, 28.4000, 19.2000, 10.1000]τZL = [4.1141, 3.9020, 3.6270, 3.3464, 2.9549, 2.3125]τHL =-3.9945 1.0000-4.1239 1.0000-4.2822 1.0000-4.4853 1.0000-4.7758 1.0000-5.2679 1.0000c4 =1.40429.6786alpha = 1.4042beita = 1.5972e+004>>仿真结果表明,用最小二乘一次完成算法可以迅速辨识出系统参数,即α=1.4042,β=1.5972e+004。

例3 考虑图3所示的仿真对象,图中, )(k v 是服从N )1,0(分布的不相关随机噪声。

且)(1-z G )()(11--=z A z B ,)(1-z N )()(11--=z C z D ,11211121()1 1.50.7()() 1.00.5()1A z z z C zB z z z D z --------⎧=-+=⎪=+⎨⎪=⎩ 经过计算,得到系统真实的模型:)()2(5.0)1()2(7.0)1(5.1)(k v k u k u k z k z k z +-+-=-+--选择图3所示的辨识模型。

仿真对象选择如下的模型结构)()2()1()2()1()(2121k v k u b k u b k z a k z a k z +-+-=-+-+ 其中,)(k v 是服从正态分布的白噪声N )1,0(。

输入信号采用4位移位寄存器产生的M 序列,幅度为0.03。

最小二乘递推算法辨识的Malab6.0程序流程如图4所示。

下面给出具体程序。

%最小二乘递推算法辨识程序, 在光盘中的文件名: RL3.mclear %清理工作间变量L=15; % 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)=-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); %第一个图形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; %把当前相对变化的列向量加入误差矩阵的第k列c0=c1; %新获得的参数作为下一次递推的旧参数c(:,k)=c1; %把辨识参数c 列向量加入辨识参数矩阵的第k列p1=p0-k1*h1'*p0; %求出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); %第二个图形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); %第三个图形i=1:15; %横坐标从1到15plot(i,ea1,'r',i,ea2,'g',i,eb1,'b',i,eb2,'r:') %画出a1,a2,b1,b2的各次辨识结果的收敛情况title('Identification Precision') %图形标题程序运行结果:>>c =0.0010 0 0.0010 -0.4984 -1.2328 -1.4951 -1.4962 -1.4991 -1.4998 -1.49990.0010 0 0.0010 0.0010 -0.2350 0.6913 0.69410.6990 0.6998 0.69990.0010 0 0.2509 1.2497 1.0665 1.0017 1.0020 1.0002 0.9999 0.99980.0010 0 -0.2489 0.7500 0.56680.5020 0.5016 0.5008 0.5002 0.50020.010.020.03Fig.1 Input Signal1Fig. 2 Parameter Ident ification with Recursive Least Squares Method100200300Fig.3 Identification Error图5 最小二乘递推算法的参数辨识仿真-1.5000 -1.5000 -1.5000 -1.4999 -1.4999 0.7000 0.7000 0.7000 0.7000 -0.7000 0.9999 0.9999 0.9999 0.9999 0.9999 0.5000 0.5000 0.5000 0.5000 0.5000 e =0 0 0 -499.4200 1.4734 0.2128 0.0007 0.0020 0.0004 0.0000 0 0 0 0 -235.9916 -3.9416 0.0042 0.0070 0.0012 0.0001 0 0 249.8612 3.9816 -0.1466 -0.0607 0.0003 -0.0018 -0.0003 -0.0001 0 0 -249.8612 -4.0136 -0.2443 -0.1143 -0.0007 -0.0016 -0.0012 -0.0001 0.0001 0.0000 -0.0000 -0.0000 0.0000 0.0001 -0.0000 0.0000 0.0000 0.0000 0.0001 0.0000 0.0000 0.0000 -0.0000-0.0004 0.0000 -0.0000 0.0000 -0.0000表2 最小二乘递推算法的辨识结果参 数 a 1 a 2 b 1 b 2 真 值 -1.5 0.7 1.0 0.5 估计值 -1.4999 0.7 0.9999 0.5000仿真结果表明,大约递推到第十步时,参数辨识的结果基本达到稳定状态,即a 1=-1.4999, a 2= 0.7000, b 1=0.9999, b 2=0.5000。

相关文档
最新文档