translatecov

跨模型转换操作转换参数协方差

语法

sys_new = translatecov (fcn sys)
sys_new = translatecov (InputN fcn, Input1,…)

描述

sys_new= translatecov (fcn,sys)转换syssys_new = fcn(系统)的参数协方差sys转换后模型的参数协方差。fcn是指定的转换函数。该命令计算的参数协方差sys_new通过应用高斯近似公式。若要查看已翻译的参数协方差,请使用getcov

直接应用模型转换并不总是将原始模型的参数协方差转换为转换后模型的参数协方差。例如,d2c(系统)不平移的参数协方差sys。相比之下,translatecov (@ (x) d2c (x)系统)生成具有相同系数的转换模型d2c(系统)的翻译参数协方差sys

sys_new= translatecov (fcn,Input1,…, InputN)返回模型sys_new = fcn (InputN Input1…)以及它的参数协方差。至少有一个N输入必须是带有参数协方差信息的线性模型。

输入参数

fcn

模型转换函数,指定为函数句柄。

对单输入函数,sys_new = fcn(系统)。的输入fcn必须是带有参数协方差信息的识别模型。典型的单输入转换操作包括:

  • 模型类型转换,如idpoly中的难点。例如,fcn = @ (x) idpoly (x)转换模型x一个多项式模型。

  • 样品时间换算,如汇集d2c。例如,fcn = @ (x)汇集(x, Ts)转换连续时间模型x使用指定的采样时间离散化时间Ts

对于多输入功能,sys_new = fcn (Input1 . . InputN)。至少一个输入参数Input1,…, InputN必须是带有参数协方差信息的识别模型。典型的多输入操作包括合并和连接多个模型。例如,fcn = @ (x, y) (x, y)执行模型的水平连接xy

sys

参数协方差信息的线性模型,指定为下列模型类型之一:

模型必须包含参数协方差信息,即getcov(系统)必须非空的。

Input1,…, InputN

翻译函数的多个输入参数fcn。至少有一个N输入必须是带有参数协方差信息的线性识别模型。其他输入可以是任何MATLAB®数据类型。例如,参见将参数协方差转化为闭环模型

输出参数

sys_new

转换操作产生的模型。该模型包含参数协方差信息。

例子

全部折叠

将估计的传递函数模型转化为状态空间模型,同时将估计的参数协方差转化为状态空间模型。

估计一个传递函数模型。

负载iddata1sys1 =特遣部队(z1, 2);

将估计的模型转换为状态空间形式,同时转换估计的参数协方差。

sys2 = translatecov (@ (x) ids (x) sys1);

如果直接将传递函数模型转换为状态空间形式,估计的参数协方差将丢失(的输出)getcov是空的)。

sys3 = ids (sys1);getcov (sys3)
ans = []

查看估计和转换模型中的参数协方差。

covsys1 = getcov (sys1);covsys2 = getcov (sys2);

比较置信区域。

h = bodeplot (sys1 sys2);showConfidence (h, 2);

置信限sys1sys2

将3个单输出模型连接起来,这样来自3个模型的协方差数据结合起来就可以产生结果模型的协方差数据。

构造一个状态空间模型。

a = [-1.1008 0.3733;0.3733 -0.9561];b = [0.7254 0.7147;-0.0631 - 2050];c = [-0.1241 0;1.4897 - 0.6715;1.4090 - -1.2075);d = [0 1.0347;1.6302 0;0.4889 0];sys = idss (a, b, c, d,“t”,0);

生成多输出估计数据。

t = (0:0.01:0.99)”;u = randn (100 2);y = lsim (sys, u, t,“zoh”);y = y + rand(size(y))/10;data = iddata (y、u, 0.01);

为每个输出信号估计一个单独的模型。

m1 = ss(数据(:1:),2,“引线”,真正的(1、2),“DisturbanceModel”,“没有”);m2 = ss(数据(:2:),2,“引线”,真正的(1、2),“DisturbanceModel”,“没有”);m3 = ss(数据(:3:),2,“引线”,真正的(1、2),“DisturbanceModel”,“没有”);

结合估计模型,同时翻译协方差信息。

f = @ (x, y, z) [x, y, z];= translatecov(f, m1, M2, m3);

参数协方差不是空的。

getcov (M2,“因素”)
ans =结构体字段:R: [36x36双]T: [24x36双]Free: [90x1逻辑]

如果将估计的模型直接合并到一个3-output模型中,协方差信息将丢失(的输出)getcov是空的)。

M1 = (M1, m2, m3);getcov (M1)
ans = []

比较置信界限。

h = bodeplot(M2, m1, M2, m3);showConfidence (h);

置信限平方米m1,平方米m3在各自的绘图轴上创建模型。

考虑一个由工厂和控制器组成的闭环反馈模型。将工厂参数协方差转化为闭环反馈模型。

使用估计数据将工厂估计为四阶状态空间模型z1

负载iddata1z1工厂= ss (z1, 4);

植物包含参数协方差信息。

将控制器创建为连续时间零极点增益模型,其中零、极点和增益分别为- 2,10,5。

控制器= zpk (-10 5);

定义一个转换函数来生成闭环反馈状态空间模型。

fcn = @ (x, y) ids(反馈(x, y));

将工厂参数协方差转化为闭环反馈模型。

sys_new = translatecov (fcn、植物、控制器);

sys_new包含翻译后的参数协方差信息。

绘制变换后模型的频率响应曲线sys_new,并查看响应的置信区域。

h = bodeplot (sys_new);showConfidence (h);

图中显示了不确定性的影响植物关于闭环响应。

提示

  • 如果你获得sys通过估计和访问估计数据,可以使用零迭代更新重新计算参数协方差。例如:

    负载iddata1m = ss (z1, 4);opt = ssestOptions opt. searchoptions。MaxIterations = 0;m_new = ss (z1, m2,选择)

    在下列情况下,不能执行零迭代更新:

    • 如果MaxIterations选项,这取决于SearchMethod选项,不可用。

    • 对于某些模型和数据类型。例如,连续时间idpoly使用时域数据建模。

算法

translatecov的单个参数的数值扰动sys来计算的雅可比矩阵fcn(系统)参数相对于参数systranslatecov然后应用高斯近似公式 c o v _ n e w = J × × J T 平移协方差,其中J是雅可比矩阵。对于包含大量自由参数的模型,此操作可能比较慢。

介绍了R2012b