MATLAB 系统辨识 - 在线估计 - Online Estimation

news/2025/2/22 11:24:55

系列文章目录

MATLAB 模型参考自适应控制 - Model Reference Adaptive Control

MATLAB 自抗扰控制 - Active Disturbance Rejection Control


文章目录

  • 系列文章目录
  • 前言
  • 一、在线参数估计
  • 二、使用步骤


前言

在线估计(Online estimation)算法是在物理系统运行期间获得新数据时,对模型的参数和状态进行估计。系统识别工具箱(The System Identification Toolbox)™ 软件使用线性(linear)、扩展(extended)和无迹卡尔曼滤波(unscented Kalman filter)或粒子滤波(particle filter)算法进行在线状态估计。工具箱使用递归预测误差最小化(recursive prediction error minimization)算法进行在线参数估计。

考虑一个事先不知道运行环境信息的供暖和制冷系统。假设该系统必须在一定时间内加热或冷却一个房间,使其达到一定温度。为了实现目标,系统必须了解房间的温度和隔热特性。您可以在系统(online)在线(运行)时估算房间的保温特性。在估算时,可以将系统工作作为输入,将房间温度作为输出。您可以使用估算的模型来改进系统性能。在线估算非常适合估算已知运行点(operating point)下系统参数值的微小偏差(small deviations)。

在线估计的常见应用包括

  • 自适应控制(Adaptive control) - 根据被控对象模型的变化,估计工厂模型以修改控制器。

  • 故障检测(Fault detection) - 将在线工厂模型与理想化或参考工厂模型进行比较,以检测工厂中的故障(异常)。

  • 软传感(Soft sensing) - 根据估算的工厂模型生成 “测量值”,并利用该测量值进行反馈控制或故障检测。

  • 在开始离线估算之前验证实验数据的质量 - 在使用测量数据进行离线估算之前,先进行几次迭代的在线估算。在线估算可快速检查实验所使用的激励信号是否捕捉到了相关的系统动态。


一、在线参数估计

在线参数估计通常采用递归算法(recursive algorithm)。递归算法使用当前的测量值(current measurements)和之前的参数估计值(previous parameter estimates)来估计每一步的参数值。因此,递归算法的内存使用效率很高。此外,递归算法的计算需求也较小。这种效率使其适合在线和嵌入式应用。有关算法的更多信息,请参阅在线参数估计递归算法(Recursive Algorithms for Online Parameter Estimation)。

系统识别工具箱(System Identification Toolbox)中,您可以在 Simulink® 或命令行中执行在线参数估计:

在 Simulink 中,使用递归最小二乘估计器(Recursive Least Squares Estimator)和递归多项式模型估计器(Recursive Polynomial Model Estimator)模块执行在线参数估计。您还可以同时使用递归多项式模型估计器和模型类型转换器(Model Type Converter)模块,根据这些模型在线估计状态空间模型。您可以使用 Simulink Coder™ 和 Simulink PLC Coder™ 软件为这些模块生成 C/C++ 代码和结构化文本。

在命令行中,使用 recursiveAR、recursiveARMA、recursiveARX、recursiveARMAX、recursiveOE、recursiveBJ 和 recursiveLS 命令来估计模型结构的模型参数。与 Simulink 中的估算不同,您可以在在线估算过程中更改递归估算算法的属性。您可以使用 MATLAB® Coder 和 MATLAB Compiler™ 软件生成代码和独立应用程序。

在 Simulink 或命令行中执行在线参数估计时,需要满足以下要求:

模型必须是离散时间线性(discrete-time linear)或近似线性,参数随时间缓慢变化。

估计期间,估计模型的结构必须固定(fixed)。

在线参数估计期间不支持 iddata 对象。将估计输出数据指定为实数标量(real scalar),将输入数据指定为实数标量或向量(real scalar or vector)。

二、使用步骤

您可以在命令行和 Simulink 中对系统进行在线状态估计:

在 Simulink 中,使用卡尔曼滤波器( Kalman Filter)、扩展卡尔曼滤波器(Extended Kalman Filter)、无迹卡尔曼滤波器(Unscented Kalman Filter)或粒子滤波器(Particle Filter)模块对离散时间线性和非线性系统进行在线状态估计。您可以使用 Simulink Coder 软件为这些模块生成 C/C++ 代码。对于卡尔曼滤波块,您还可以使用 Simulink PLC Coder 软件生成结构化文本。

在命令行中,使用 extendedKalmanFilter、uncentedKalmanFilter 和 particleFilter 命令估计离散时间非线性系统的状态。这些命令实现了离散时间扩展卡尔曼滤波(EKF)、非特征卡尔曼滤波(UKF)和粒子滤波算法。有关这些算法的更多信息,请参阅在线状态估计的扩展卡尔曼滤波算法和无迹卡尔曼滤波算法。您可以使用 MATLAB Coder 和 MATLAB Compiler 软件生成代码和独立应用程序。

在 Simulink 或命令行中执行在线状态估计时,需要满足以下要求:

系统必须是离散时间的。如果使用卡尔曼滤波块,系统也可以是连续时间的。

在线状态估计期间不支持 iddata 对象。将估计输入输出数据指定为实数标量或矢量。

参考文献


[1] Ljung, L. System Identification: Theory for the User. Upper Saddle River, NJ: Prentice-Hall PTR, 1999, pp. 428–440.

[2] Simon, D. Optimal State Estimation: Kalman, H Infinity, and Nonlinear Approaches. John Wiley and Sons Inc., 2006.


http://www.niftyadmin.cn/n/5236604.html

相关文章

两道面试题秒杀你的C++基础!

大家好,我是光城,今天发两个非常重要的面试题,可以留言区说出你的答案,这两个题目都比较重要,看你能答对不? 1.C中初始化变量有几种方式,各自有什么区别? 或者说Initialization分为哪…

Presto:基于内存的OLAP查询引擎

Presto查询引擎 1、Presto概述1.1、Presto背景1.2、什么是Presto1.3、Presto的特性2、Presto架构2.1、Presto的两类服务器2.2、Presto基本概念2.3、Presto数据模型3、Presto查询过程3.1、Presto执行原理3.2、Presto与Hive3.3、Presto与Impala3.4、PrestoDB与PrestoSQL4、Presto…

基于Java SSM框架+Vue实现药品保健品购物网站项目【项目源码+论文说明】

基于java的SSM框架Vue实现药品保健品购物网站演示 摘要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 ssm药源购物网站,主要的模块包括两个用户,管理员权限:用…

【开源】基于JAVA的校园电商物流云平台

项目编号: S 034 ,文末获取源码。 \color{red}{项目编号:S034,文末获取源码。} 项目编号:S034,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 商品数据模块2.3 快…

asp.net FTP客户端设计与开发

4.1 软件总体分析与设计 根据需求分析,按照系统开发的基本观点对功能进行分解,从功能上可对模块作如下划分: 1.连接管理模块:主要完成主机与服务器之间的连接与关闭操作。 2.文件管理模块:主要完成文件的显示、新建文件、删除文件等。 3.文件…

Python高级数据结构——字典树(Trie)

Python中的字典树(Trie):高级数据结构解析 字典树,又称为Trie树,是一种用于处理字符串集合的树形数据结构。它通过将字符串的每个字符存储在节点中,形成树状结构,具有高效的插入、查找和删除操…

自己生成二维码

1 你的需求 有时候你自己需要一些二维码,用于访问一些链接,但是你发现你在百度的时候,各种乱七八糟,夹带广告,免费的,付费的二维码生成服务,弄得你云里雾里,不知道相信哪个。也不太…

ios 逆向分分析,某业帮逆向算法(二)

接上讲 上次hook 发现自己的数据有点问题。才发现是自己的编辑器识别出问题了。 上篇sub_1029B6898函数hook数据如下: [iOS Device::作业帮 ]-> arg2: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF 00000000 37 32 65 64 38 31 32 38…