分别通过LS和RML进行模型参数辨识matlab仿真

发布于:2024-07-08 ⋅ 阅读:(44) ⋅ 点赞:(0)

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

4.1 最小二乘法(LS)参数辨识

4.2 递归最大似然估计(RML)参数辨识

5.完整程序


1.程序功能描述

分别通过LS和RML进行模型参数辨识matlab仿真,仿真输出参数辨识的误差,参数值的收敛值。

2.测试软件版本以及运行结果展示

MATLAB2022A版本运行

(完整程序运行后无水印)

3.核心程序

................................................................
%LS辨识
[c,err] = func_LS(y2,y1,L);

a1_est=c(1,:); 
a2_est=c(2,:); 
b1_est=c(3,:); 
b2_est=c(4,:); 


a1_err=err(1,:); 
a2_err=err(2,:); 
b1_err=err(3,:); 
b2_err=err(4,:); 


figure;
plot(1:L,a1_est,'r')
hold on
plot(1:L,a2_est,'b')
hold on
plot(1:L,b1_est,'m')
hold on
plot(1:L,b2_est,'k')
hold on
xlabel('k')
ylabel('辨识参数') %标注纵轴变量
title('LS辨识参数估计值') %图形标题
legend(['a1估计值:',num2str(a1_est(end)),',真实值:',num2str(a1)],...
       ['a2估计值:',num2str(a2_est(end)),',真实值:',num2str(a2)],...
       ['b1估计值:',num2str(b1_est(end)),',真实值:',num2str(b1)],...
       ['b2估计值:',num2str(b2_est(end)),',真实值:',num2str(b2)]);

figure; %画第3个图形
plot(1:L,a1_err,'r')
hold on
plot(1:L,a2_err,'b')
hold on
plot(1:L,b1_err,'m')
hold on
plot(1:L,b2_err,'k')
hold on
xlabel('k')
ylabel('辨识参数') %标注纵轴变量
title('LS辨识参数估计值') %图形标题
legend(['a1估计误差:',num2str(a1_err(end))],...
       ['a2估计误差:',num2str(a2_err(end)),],...
       ['b1估计误差:',num2str(b1_err(end))],...
       ['b2估计误差:',num2str(b2_err(end))]);
xlabel('k') %标注横轴变量
ylabel('参数误差') %标注纵轴变量
title('参数的误差收敛情况') %图形标题
68

4.本算法原理

       在控制理论和系统辨识领域,模型参数辨识是确定动态系统数学模型参数的过程,这对于控制系统的设计、分析和优化至关重要。"LS"通常指的是最小二乘法(Least Squares),而"RML"可能指的是递归最大似然估计(Recursive Maximum Likelihood)或相关的递归辨识方法。

4.1 最小二乘法(LS)参数辨识

       最小二乘法是一种常用的数据拟合技术,它旨在找到一组模型参数,使得模型预测值与实际观测值之间的误差平方和最小。对于一个线性动态系统,如果我们假设系统的输出y(t)与输入u(t)之间存在如下关系(离散时间表示):

4.2 递归最大似然估计(RML)参数辨识

       递归最大似然估计是一种在线参数辨识方法,它基于系统的观测数据,逐步更新模型参数估计,适用于实时数据处理和参数快速变化的场景。假设系统动态可以由一个状态空间模型描述:

       综上所述,最小二乘法和递归最大似然估计(通过递归最小二乘等方法实现)都是有效的模型参数辨识技术,前者适合于离线批量处理大量数据,后者则适合于实时在线处理数据流,两者在理论基础和应用场景上各有侧重。

5.完整程序

VVV