主要内容

中的难点

具有可识别参数的状态空间模型

描述

使用中的难点创建具有可识别(可估计)系数的连续时间或离散时间 - 空间模型,或转换动态系统模型到国家空间形式。

具有输入向量系统的状态空间模型u、输出向量y和干扰e连续时间的形式如下:

d x t d t 一个 x t + B u t + K e t y t C x t + D u t + e t

在离散时间下,状态空间模型的形式为:

x k + 1 一个 x k + B u k + K e k y k C x k + D u k + e k

为了中的难点模型,状态空间矩阵的元素一个BC, 和D是可估计的参数。状态扰动的因素K也可以是可评估的参数。的中的难点模型中存储这些矩阵元素的值一个BCD, 和K模型的属性。

创建

你可以获得中的难点模型对象以三种方式之一。

  • 估计中的难点模型基于系统的输入-输出测量n4sidSSEST..这些估计命令估计状态空间矩阵的可估计元素的值。估计值存储在一个BCD, 和K结果的性质中的难点模型。的报告属性存储关于评估的信息,例如初始状态值的处理和评估中使用的选项。例如:

    sys = ss(数据、nx);一个= sys.A;B = sys.B;sys。报告

    要了解更多估算a的例子中的难点模型,参见SSEST.n4sid

  • 创建一个中的难点模型使用中的难点命令。例如:

    sys = ids (A, B, C, D)
    您可以创建中的难点模型配置初始参数化以估计状态空间模型以适应测量的响应数据。当您这样做时,您可以在一个或多个状态空间矩阵元素上指定约束。例如,您可以修复某些元素的值,或为自由元素指定最小值或最大值。然后,您可以使用配置的模型作为估计命令的输入参数(SSEST.n4sid)通过这些约束估计参数值。对于例子,见创建具有可识别参数的状态空间模型配置状态空间模型的可识别参数

  • 将现有的动态系统模型转换为中的难点模型使用中的难点命令。例如:

    sys_ss = ids (sys_tf);

有关功能的信息,您可以用来从或转换中提取信息中的难点模型对象,见对象功能

描述

状态空间模型创建

例子

sys= ids (A, B, C, D)使用指定的状态空间矩阵创建状态空间模型A, B, C, D.默认情况下,sys是具有未指定采样时间和无状态干扰元件的离散时间模型。特别是当您想要将初始参数化配置为输入到状态空间估计函数的输入时,请使用此语法n4sidSSEST.

例子

sys= idss (A, B, C, D, K)指定干扰矩阵K

例子

sys= IDS(A,B,C,D,K,x0用向量初始化状态值x0

例子

sys= IDS(A,B,C,D,K,x0,TS)指定示例时间属性TS..使用t = 0创建连续时间模型。

例子

sys= idss (___名称,值使用一个或多个名称值对参数设置其他属性。在前一个语法中的任何输入参数组合后指定名称值对参数。

将动态系统模型转换为状态空间模型

例子

sys= idss (sys0转换任何动态系统模型sys0中的难点模型形式。

sys= idss (sys0,'分裂')转换sys0中的难点模型形式,并对待最后纽约输入频道sys0作为返回模型中的噪声通道。sys0必须是数字(未标识)特遣部队(控制系统工具箱)zpk(控制系统工具箱),或党卫军(控制系统工具箱)模型对象。同时,sys0必须至少有和输出一样多的输入。

输入参数

全部展开

初始状态值,指定为列向量Nx价值观。

动态系统,指定为要转换为的动态系统模型中的难点模型。

  • sys0是一个识别的模型,其估计的参数协方差在转换期间丢失。如果要在转换期间转换估计的参数协方差,请使用translatecov

  • sys0的状态空间数据是一个数字(未识别)模型吗sys0定义了一个BC, 和D转换模型的矩阵。干扰矩阵K固定为零。的NoiseVariance默认值默认为眼睛(纽约),在那里纽约的输出数是多少sys

的语法sys = idss (sys0 '分裂')sys0必须是数字(未标识)特遣部队(控制系统工具箱)zpk(控制系统工具箱),或党卫军(控制系统工具箱)模型对象。同时,sys0必须至少有和输出一样多的输入。最后,子系统纽约sys0(: + 1:纽约+ν)必须包含一个非零的馈通项(子系统必须是双固有的)。

属性

全部展开

状态空间矩阵的值,指定为对应于每个A、B、C和D矩阵的矩阵。

对于一个系统Ny输出,Nu输入,Nx状态,状态空间矩阵具有以下尺寸:

  • 一个- - - - - -Nx——- - - - - -Nx矩阵

  • B- - - - - -Nx——- - - - - -Nu矩阵

  • C- - - - - -Ny——- - - - - -Nx矩阵

  • D- - - - - -Ny——- - - - - -Nu矩阵

如果你获得了一个中的难点模型sys通过识别使用SSEST.n4sid, 然后sys.a.sys.b.sys.c., 和sys.d.包含矩阵元素的估计值。

如果你创建一个中的难点模型sys使用中的难点命令,sys.a.sys.b.sys.c., 和sys.d.包含您使用的状态空间矩阵的初始值A, B, C, D输入参数。

对于一个中的难点模型sys,每个属性sys.a.sys.b.sys.c., 和sys.d.是相应的别名价值条目的结构财产sys.例如,sys.a.是属性值的别名吗sys.structure.a.value.

状态扰动矩阵的值K,指定为Nx——- - - - - -Ny矩阵,其中Nx状态数是和吗Ny为输出数。

如果你获得了一个中的难点模型sys通过识别使用SSEST.n4sid, 然后sys.k.包含矩阵元素的估计值。

如果你创建一个中的难点模型sys使用中的难点命令,sys.k.包含您使用的状态空间矩阵的初始值K输入参数。

对于一个中的难点模型syssys.k.是属性值的别名吗sys.structure.k.Value.

状态名称,指定为字符向量或单元格数组。

  • 一阶模型-字符向量

  • 具有两个或多个状态的模型-字符向量的单元数组

  • 未命名的国家 -''

例子:'速度'命名一阶模型中唯一的状态

状态单位,指定为字符向量或单元格数组。

  • 一阶模型-字符向量

  • 具有两个或多个状态的模型-字符向量的单元数组

  • 没有指定单位的状态-''

使用组织为了跟踪每个状态所表示的单位。组织对系统行为没有影响。

例子:'rad'对应于一阶模型中唯一状态的单位

关于可估计参数的信息中的难点模型,指定为特定于属性的值。结构。一个结构。BStructure.C结构。D, 和结构。K包含关于一个BCD, 和K矩阵分别。每个参数结构包含以下字段。

场地 描述 例子
价值 参数值 - 每个属性sys.a.sys.b.sys.c., 和sys.d.是相应的别名价值条目的结构财产sys表示未知的参数值。 sys.structure.a.value.的初始值或估计值一个矩阵。sys.a.是属性值的别名吗sys.structure.a.value.
最低限度 参数在估计过程中可以假定的最小值 sys.Structure.K.Minimum = 0控件中的所有项K矩阵大于等于零。
最大 参数在估计过程中可以假定的最大值
免费的 Boolean指定参数是否是免费估计变量。如果要修复估计期间参数的值,请设置相应的自由= false 如果一个是一个3×3矩阵,sys.structure.a.free =眼睛(3)修正所有非对角线的条目一个中的指定值sys.structure.a.value..在这种情况下,只有对角线条目一个是可评估的。
规模 参数值的比例。估计算法不使用规模
信息 包含字段的结构数组标签单元用于存储参数标签和单元。指定参数标签和单位作为字符向量。 “时间”

的示例来配置模型参数结构财产,参见配置状态空间模型的可识别参数

模型创新的方差(协方差矩阵)e,指定为标量或矩阵。

  • SISO模型 - 标量

  • 再分配模型Ny输出-Ny——- - - - - -Ny矩阵

识别的模型包括白色高斯噪声分量et)。NoiseVariance是该噪声分量的方差。通常,模型估计函数(例如SSEST.)决定此差异。

此属性是只读的。

摘要报告,包含关于使用评估命令获得的状态空间模型的评估选项和结果的信息,例如SSEST.ssregest, 和n4sid.使用报告查找识别模型的估计信息,包括:

  • 估算方法

  • 估计选项

  • 搜索终止条件

  • 评估数据匹配和其他质量度量

如果您通过施工创建模型,则内容报告是无关紧要的。

A = [-0.1 0.4;-0.4 - -0.1);B = [1;0);C = [1 0];D = 0;m = idss (A, B, C, D);sys.Report.OptionsUsed
ans = []

如果是using estimation命令,则字段为报告包含有关估计数据,选项和结果的信息。

加载iddata2z2;m = ss (z2, 3);m.Report.OptionsUsed
初始状态:'auto' N4Weight: 'auto' N4Horizon: 'auto' Focus: 'prediction' estimatecvariance: 1 Display: 'off' InputOffset: [] OutputOffset: [] outpuweight: [] SearchMethod: 'auto' SearchOptions: [1x1 idoptions.search.]identsolver正则化:[1x1 struct]高级:[1x1 struct]

有关此属性的更多信息以及如何使用它,请参阅相应估计命令参考页面的输出参数部分和估计报告

每个输入通道的输入延迟,指定为标量值或数字向量。对于连续时间系统,在存储的时间单元中指定输入延迟TimeUnit财产。对于离散时间系统,以采样时间的整数倍指定输入延迟TS..例如,设置inputdelay.3.指定三个采样时间的延迟。

对于一个系统Nu输入,集合inputdelay.到一个Nu1的向量。这个向量的每一项都是一个数值,表示对应输入通道的输入延迟。

你也可以设置inputdelay.对标量值施加相同的延迟到所有通道。

对于已识别的系统,例如中的难点OutputDelay固定为零。

采样时间,指定为以下之一。

  • 连续时间模型 -0

  • 具有指定采样时间的离散时间模型 - 表示在由此指定的单位中表示的采样周期的正标量TimeUnit模型的财产

  • 不确定样本时间的离散时间模型-1

更改此属性不会离散或重新取样模型。使用C2D.d2c在连续和离散时间表示之间转换。使用d2d更改离散时间系统的采样时间。

单位为时间变量,即样本时间TS.,以及模型中指定为标量的任何时间延迟。

更改此属性不会重新取样或转换数据。修改属性只会改变现有数据的解释。使用chgtimeUnit.(控制系统工具箱)将数据转换为不同的时间单位

输入通道名称,指定为字符向量或单元格数组。

  • 单输入模型 - 字符向量。例如,'控制'

  • 多输入模型 - 字符向量的单元格阵列。

或者,使用自动向量展开为多输入模型分配输入名称。例如,如果sys是一个双输入模型,输入:

sys。InputName =“控制”;

输入名称自动展开为{“控制(1)”,“控制”(2)}

当您使用一个估计模型时iddata对象数据,软件自动设定InputNamedata.InputName.

你可以使用速记符号u参考InputName财产。例如,sys.u相当于sys。InputName

您可以通过几种方式使用输入通道名称,包括:

  • 在模型显示和图表中识别通道

  • 提取MIMO系统的子系统

  • 互连模型时指定连接点

输入通道单元,指定为字符向量或单元数组:

  • 单输入模型 - 字符向量

  • 多输入模型 - 字符向量单元阵列

使用InpoinUnit.跟踪输入信号单元。InpoinUnit.对系统行为没有影响。

输入通道组,指定为结构。的InputGroup属性允许您将MIMO系统的输入通道划分为多个组,以便您可以按名称引用每个组。在InputGroup结构,将字段名称设置为组名称,以及属于每个组的输入通道的字段值。

例如,创建名为的输入组控制噪音包括输入通道1,2和3,5。

sys.inputgroup.controls = [1 2];sys.inputgroup.noise = [3 5];

然后您可以从控制输入到所有输出使用以下语法:

sys(:,“控制”)

输出通道名称,指定为字符向量或单元格数组。

  • 单输入模型 - 字符向量。例如,'测量'

  • 多输入模型 - 字符向量的单元格阵列。

或者,使用自动矢量扩展为多输出模型分配输出名称。例如,如果sys是一个双输出模型,输入:

sys.outputname ='测量';

输出名称自动展开为{'测量(1)';'测量(2)'}

当您使用一个估计模型时iddata目的,数据,软件自动设定outputName.data.outputname.

你可以使用速记符号y参考outputName.财产。例如,sys.y相当于sys.outputname.

您可以以多种方式使用输出通道名称,包括:

  • 在模型显示和图表中识别通道

  • 提取MIMO系统的子系统

  • 互连模型时指定连接点

输出通道单元,指定为字符向量或单元数组。

  • 单输入模型 - 字符向量。例如,“秒”

  • 多输入模型 - 字符向量的单元格阵列。

使用OutputUnit跟踪输出信号单元。OutputUnit对系统行为没有影响。

输出通道组,指定为结构。的产量组属性允许您将MIMO Systems的输出通道划分为组,并按名称引用每个组。在产量组结构,将字段名设置为组名,并将字段值设置为属于每个组的输出通道。

例如,创建名为温度测量分别包括输出通道1、3、5。

sys.OutputGroup.temperature = [1];sys.OutputGroup.measurement = [3 5];

然后可以从所有的输入中提取子系统测量使用以下语法输出:

SYS('测量',:)

系统名,指定为字符向量。例如,“system_1”

要与系统关联的任何文本,指定为字符串或字符向量单元格数组。该属性存储您提供的任何数据类型。例如,如果sys1sys2是动态系统模型,可以设置他们的笔记属性如下。

sys1.notes =."sys1有一个字符串。";sys2。笔记='sys2有一个字符矢量。';sys1。笔记sys2。笔记
Ans = ' sys1 has a string. ' Ans = 'sys2 has a character vector.'

与系统相关联的数据,指定为任何MATLAB数据类型。

为模型数组采样网格,指定为结构。

对于通过采样一个或多个独立变量来导出的识别线性(IDLTI)模型的阵列,该属性跟踪与每个模型关联的变量值。显示或绘制模型阵列时出现此信息。使用此信息将跟踪结果追溯到独立变量。

将数据结构的字段名设置为抽样变量的名称。将字段值设置为与数组中每个模型相关联的采样变量值。所有采样变量必须是数值和标量值,所有采样值数组必须与模型数组的维数相匹配。

例如,假设您在系统的各个操作点收集数据。您可以为每个工作点分别确定一个模型,然后将结果堆叠到一个系统数组中。您可以用有关操作点的信息标记数组中的各个模型。

nominal_engine_rpm = [1000 5000 10000];sys.samplinggrid = struct(“转”nominal_engine_rpm)

这里,sys是包含在1000,5000和10000 rpm的三个识别模型的阵列。

对于您通过线性化模拟链接生成的模型阵列金宝app®模型在多个参数值或操作点,软件填充SamplingGrid自动使用数组中每个条目对应的变量值。

对象功能

一般来说,任何函数都适用于动态系统模型适用于一个中的难点模型对象。这些函数有四种一般类型。

  • 运营和返回的功能中的难点模型对象使您可以转换和操作中的难点模型。例如:

    • 使用佳能改变一个中的难点模型成规范形式

    • 使用合并合并估计中的难点模型。

    • 使用C2D.将一个中的难点从连续时间到离散时间。使用d2c将一个中的难点从离散时间到连续时间。

  • 执行分析和仿真功能的功能中的难点对象,如bSIM

  • 检索或解释模型信息的功能,例如建议getpar.

  • 转换的功能中的难点对象进入不同的模型类型,例如idpolyidtf对于时域或IDFRD.连续域

下面的列表包含可以使用的具有代表性的函数子集中的难点模型。

全部展开

佳能 状态空间实现规范化
ss2ss 状态空间模型的坐标转换
哈密​​拉 模型降阶
translatecov 在模型转换操作之间转换参数协方差
setpar 设置的初始参数值idnlgrey模型对象
chgtimeUnit. 改变动态系统的时间单位
d2d 重新采用离散时间模型
d2c 将模型从离散时间转换为连续时间
C2D. 将模型从连续时间转换为离散时间
合并 合并估计模型

全部展开

SIM 模拟辨识模型的响应
预测 利用扩展卡尔曼滤波或无迹卡尔曼滤波或粒子滤波预测下一时刻的状态和状态估计误差协方差
相比 比较已确定的模型输出和测量输出
冲动 动态系统的脉冲响应图;脉冲响应数据
一步 动态系统阶跃响应图;阶跃响应数据
b 频率响应的波德图,或幅值和相位数据
data2state 将过去的数据映射到状态空间和非线性ARX模型的状态
findstates 估计模型的初始状态

全部展开

idssdata 被识别系统的状态空间数据
得到 访问模型属性值
getpar. 的参数值和属性idnlgrey模型参数
getcov 辨识模型的参数协方差
建议 数据或估计线性模型的分析和建议

全部展开

idpoly 具有可识别参数的多项式模型
idtf 参数可识别的传递函数模型
IDFRD. 频率响应数据或模型

例子

全部收缩

创建具有可识别参数的四阶SISO状态空间模型。将所有条目的初始状态值初始化为0.1。将采样时间设置为0.1 s。

A = blkdiag([-0.1 0.4;-0.4 - -0.1], [1 5;5 1]);B = [1;0 (3,1)];C = [1 0 1 0];D = 0;K = 0 (4,1);x0 = (0.1, 0.1, 0.1, 0.1);t = 0.1; sys = idss(A,B,C,D,K,x0,Ts);

sys是第4阶SISO中的难点模型。状态数和输入输出维数由状态空间矩阵的维数决定。默认情况下,是矩阵中的所有项一个BCD, 和K是可识别的参数。

您可以使用sys为状态空间模型估计指定初始参数化SSEST.n4sid

创建具有可识别参数的四阶SISO状态空间模型。姓名模型的输入和输出通道,并指定分钟作为模型时间单位。

您可以使用名称值对参数在模型创建期间指定其他模型属性。

A = blkdiag([-0.1 0.4;-0.4 - -0.1], [1 5;5 1]);B = [1;0 (3,1)];C = [1 0 1 0];D = 0;sys = idss (A, B, C, D,“InputName”“开车”“TimeUnit”“分钟”);

要更改或指定现有模型的大多数属性,可以使用点表示法。例如,更改输出名称。

sys.outputname =.“扭矩”

配置A.中的难点模型中没有状态扰动元素,只有非零项一个矩阵是可评估的。此外,修复了值的值B矩阵。

您可以配置单个参数中的难点模型指定状态空间模型估计的约束SSEST.n4sid

创建一个中的难点模型。

A = blkdiag([-0.1 0.4;-0.4 - -0.1], [1 5;5 1]);B = [1;0 (3,1)];C = [1 0 1 0];D = 0;K = 0 (4,1);x0 = (0.1, 0.1, 0.1, 0.1);sys = idss (A, B, C, D, K, x0, 0);

设置的所有条目K0创造一个中的难点无状态扰动元的模型。

使用结构模型的属性来修复某些参数的值。

sys.structure.a.free =(a = 0);sys.structure.b.free = false;sys.structure.k.free = false;

的条目sys.structure.a.free.确定是否有相应的条目sys.a.是自由的(可识别的)还是固定的。第一行集合sys.structure.a.free.到逻辑矩阵真正的无论一个是非零,还有错误的其他地方。此设置修复了零条目的值sys.a.

其余的行固定所有的值sys.b.sys.k.到您在模型创建期间指定的值。

用传递函数建立动态系统的模型。然后使用中的难点将传递函数模型转换为状态空间形式。

使用idtf,构造一个连续时间单输入单输出(SISO)传递函数,描述为:

G 年代 年代 + 4 年代 2 + 2 0 年代 + 5

Num = [1 4];Den = [1 20 5];G = idtf (num穴)
G = s + 4-------------- s^2 + 20s + 5连续时间辨识传递函数。参数化:极点数:2零数:1自由系数:4参数及其不确定性使用“tfdata”、“getpvec”、“getcov”。状态:由直接构造或转换产生。不估计。

将传递函数转换为状态空间形式。

sys0 = IDS(g)
sys0 =连续时间状态空间模型发现:dx / dt = x (t) + B u e (t) + K (t) y (t) = C x (t) + D u (t) + e (t) -2.5 = (x1, x2) x1 -20 x2 u1 x1 2 x2 0 2 0 B = C = (x1, x2)日元0.5 - 1 D = u1 y1 0 K = y₁x1 0 x2 0参数化:自由形式(所有系数A、B、C免费)。参数及其不确定性使用“idssdata”、“getpvec”、“getcov”。状态:由直接构造或转换产生。不估计。

创建一个状态空间模型数组。

你可以通过以下几种方式之一创建状态空间模型数组:

  • 直接阵列施工使用 n - 尺寸的状态空间阵列

  • 索引分配的数组建设

  • 阵列建筑使用命令

  • 使用识别的模型使用rsample命令

通过提供创建一个数组 n - 阵列数组作为输入参数中的难点,而不是二维矩阵。

一个=兰德(2,2,3,4);sysarr = idss(A,[2;1],[1 1],0);

提供多维数组时中的难点前两个维度指定数组中每个模型的状态、输入或输出的数量,而不是状态空间矩阵中的一个。其余的维度指定数组本身的维度。一个是一个2 × 2 × 3 × 4的数组。因此,sysarr一个3乘4的数组是多少中的难点模型。每个模型在sysarr有两个状态,由前两个维度指定一个.此外,每个模型sysarr有相同的BC, 和D价值观。

通过索引赋值创建数组。

sysarr = idss (0 (1, 1, 2));Sysarr (:,: 1) = idss([4 -3;2 0], [2; 1], [1], 0);sysarr (:: 2) = idss(兰德(2),兰德(2,1),兰德(1、2),1);

第一个命令premlates阵列。阵列的前两个维度是阵列中每个模型的I / O尺寸。因此,sysarr是SISO模型的2个元素矢量。

其余命令分配中的难点模型到每个位置sysarr.数组中的每个模型必须具有相同的I/O维。

添加另一个模型到sysarr使用

是通过索引构建数组的替代方案。

Sysarr = stack(1, Sysarr,idss([1 -2;4 9], [0, 1], [1], 0));

该命令添加了另一个中的难点模型沿的第一个数组维数sysarrsysarr现在是一个3比1的siso数组中的难点模型。

在R2006A介绍