主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

使用 Simulink 递归估计器模块估计系统参数

此示例说明如何估计双参数系统的参数并比较测量和估计的输出。

此示例是recursiveLS中提供的命令行参数估计示例的 Simulink® 版本。

该系统有两个参数,表示为:

$y(t) = a_1u(t) + a_2u(t-1)$

其中,

  • $u$$y$ 分别是实时输入和输出数目据。

  • $u(t)$$u(t-1)$ 是系统的回归量,$H$

  • $a_1$$a_2$ 是系统的参数,$\theta$

加载数据并提取输入、输出和时间信息。

为了直接将此示例与命令行 recursiveLS 示例进行比较,请将时间向量移动一个位置。此转变将 Simulink 输入(时间从 0 开始)与命令行输入(时间从第一个采样时间开始)同步。

load iddata3
input = z3.u;
output = z3.y;
time = z3.SamplingInstants-1;

为 Simulink 构建输入和输出信号。

input_sig = timeseries(input,time);
output_sig = timeseries(output,time);

打开基于 Recursive Least Squares Estimator 模块的预配置 Simulink 模型。在此模型中:

  • input_sigoutput_sig 模块导入 input_sigoutput_sig

  • 该模型通过将 input_sig 路由到延迟线模块来构建 Regressors 信号,然后将延迟信号与原始信号多路复用。

  • Error 端口提供估计的误差信号。Sum 模块从 input_sig 中减去此误差以产生估计的输出。

  • 然后,Mux 模块将测量的 (output_sig) 和估计的输出信号组合在一起,以便您可以在示波器上一起查看它们。

rls = 'ex_RLS_Estimator_Block_sb_inf';
open_system(rls)

运行仿真。Parameter Scope 显示估计的进展。相邻的 Parameter Display 显示最终的值。Outputs Scope 将测量和估计的输出绘制在一起。

sim(rls)
open_system([rls '/Parameter Scope'])
open_system([rls '/Outputs Scope'])

您可以通过修改模型参数来探索其他模块配置。例如,

  • 更改 Estimation Method 以查看您的算法选择如何影响您的结果。

  • History 更改为 finite,将 Window Length 更改为 30,以应用滑动窗口算法。

另请参阅

| |

主题