主要内容

中的难点

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

描述

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

具有输入向量的系统的状态空间模型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模型的属性。

创建

你可以获得中的难点用三种方法中的一种建模对象。

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

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

    有关估计的更多例子中的难点模型中,看到党卫军或者n4sid

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

    sys = ids (A, B, C, D)
    您可以创建中的难点模型配置初始参数,以估计状态空间模型,以拟合测量的响应数据。当您这样做时,您可以在一个或多个状态空间矩阵元素上指定约束。例如,您可以确定某些元素的值,或者为自由元素指定最小值或最大值。然后,您可以使用配置的模型作为估算命令的输入参数(党卫军或者n4sid)来估计这些约束条件的参数值。有关示例,请参见创建具有可识别参数的状态空间模型配置状态空间模型的可识别参数

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

    sys_ss = ids (sys_tf);

有关可用于提取信息或转换信息的函数的信息中的难点模型对象,看对象的功能

描述

状态空间模型创建

例子

SYS.= ids (A, B, C, D)创建具有指定状态空间矩阵的状态空间模型A, B, C, D.默认情况下,SYS.为采样时间不确定且无状态扰动元素的离散时间模型。使用此语法,特别是当您希望将初始参数配置为状态空间估计函数的输入时,例如n4sid或者党卫军

例子

SYS.= idss (A, B, C, D, K)指定扰动矩阵K

例子

SYS.= idss (A, B, C, D, K,X0.用载体初始化状态值X0.

例子

SYS.= idss (A, B, C, D, K,X0.Ts)指定样本时间属性Ts.使用TS = 0.来创建一个连续时间模型。

例子

SYS.= IDSS(___名称,值使用一个或多个名称-值对参数设置附加属性。在前面语法中的任何输入参数组合之后指定名称-值对参数。

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

例子

SYS.= IDSS(sys0转换任何动态系统模型sys0到目前为止中的难点模型形式。

SYS.= IDSS(sys0, '分裂')转换sys0到目前为止中的难点模型形式,并对待最后一个纽约输入通道的sys0作为返回模型中的噪声通道。sys0必须是一个数字(非识别的)TF.(控制系统工具箱)zpk(控制系统工具箱)或者SS.(控制系统工具箱)模型对象。同时,sys0必须至少有和输出一样多的输入。

输入参数

全部展开

的列向量指定的初始状态值Nx值。

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

  • sys0为已识别模型,其估计参数协方差在转换过程中丢失。如果您想在转换期间转换估计参数协方差,请使用translatecov

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

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

属性

全部展开

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

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

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

  • BNx——- - - - - -Nu矩阵

  • CNy——- - - - - -Nx矩阵

  • DNy——- - - - - -Nu矩阵

如果你获得中的难点模型SYS.通过识别使用党卫军或者n4sid,然后sys。一个sys。Bsys.C,和sys。D包含矩阵元素的估计值。

如果你创建一个中的难点模型SYS.使用中的难点命令,sys。一个sys。Bsys.C,和sys。D中指定的状态空间矩阵的初始值A, B, C, D输入参数。

对于A.中的难点模型SYS.,每个属性sys。一个sys。Bsys.C,和sys。D是对应的别名吗价值条目的结构的属性SYS..例如,sys。一个是属性值的别名吗sys.Structure.A.Value

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

如果你获得中的难点模型SYS.通过识别使用党卫军或者n4sid,然后sys。K包含矩阵元素的估计值。

如果你创建一个中的难点模型SYS.使用中的难点命令,sys。K属性指定的状态空间矩阵的初始值K输入参数。

对于A.中的难点模型SYS.sys。K是属性值的别名吗sys.Structure.K.Value

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

  • 一阶模型-字符向量

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

  • 不愿透露姓名的州

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

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

  • 一阶模型-字符向量

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

  • 没有指定单位的状态-

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

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

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

描述 例子
价值 参数值-每个属性sys。一个sys。Bsys.C,和sys。D是对应的别名吗价值条目的结构的属性SYS.表示未知的参数值。 sys.Structure.A.Value的初始值或估计值一个矩阵。sys。一个是属性值的别名吗sys.Structure.A.Value
最低 参数在估计过程中可以假定的最小值 sys.Structure.K.Minimum = 0控件中的所有项K矩阵大于等于零。
最大 参数在估计过程中可以假定的最大值
免费的 布尔值,指定参数是否为自由估计变量。如果您想在估计期间固定参数的值,请设置相应的值免费=假 如果一个是一个3 × 3矩阵,sys.Structure.A.Free =眼睛(3)修正所有非对角线的条目一个指定的值sys.Structure.A.Value.在这种情况下,只有对角线条目一个是有价值的。
规模 参数值的比例。估计算法不使用规模
信息 包含字段的结构数组标签单位用于存储参数标签和单位。将参数标签和单位指定为字符向量。 “时间”

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

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

  • SISO模型-标量

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

辨识出的模型包含高斯白噪声成分et).noisavariance.是这个噪声分量的方差。通常,模型估计函数(如党卫军)确定这种方差。

此属性是只读的。

摘要报告,包含关于使用评估命令获得的状态空间模型的评估选项和结果的信息,例如党卫军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 = []

如果您获取使用估算命令,则字段报告包含关于估计数据、选项和结果的信息。

负载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]

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

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

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

你也可以设置InputDelay对标量值对所有通道应用相同的延迟。

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

示例时间,指定为以下方式之一。

  • 连续时间模型,0

  • 具有指定采样时间的离散时间模型-以指定的单位表示采样周期的正标量时髦模型属性

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

更改此属性不会离散或重新取样模型。使用汇集D2C.在连续时间表示和离散时间表示之间进行转换。使用D2D.改变离散时间系统的采样时间。

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

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

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

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

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

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

sys.InputName ='控件';

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

当你用iddata对象数据,软件自动设定InputName到目前为止数据。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到目前为止数据。OutputName

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

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

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

  • 提取MIMO系统的子系统

  • 连接模型时指定连接点

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

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

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

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

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

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

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

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

系统(“测量”,:)

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

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

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

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

用于模型阵列的采样网格,指定为结构。

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

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

例如,假设您在系统的各种操作点收集数据。您可以单独识别每个操作点的模型,然后将结果堆叠在一起中成一个系统阵列。您可以使用关于操作点的信息标记数组中的各个模型。

Nominal_engine_rpm = [1000 5000 10000];sys。SamplingGrid =结构(“转”nominal_engine_rpm)

在这里,SYS.是一个数组,包含三个确定的模型,分别在1000,5000,和10000 rpm。

用于通过线性化Simulink生成的模型数组万博1manbetx®模型在多个参数值或操作点,软件填充SamplingGrid.自动使用数组中每个条目对应的变量值。

对象的功能

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

  • 操作和返回的函数中的难点模型对象使您能够进行转换和操作中的难点模型。例如:

    • 使用佳能改变一个中的难点模型化为标准形式

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

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

  • 用于执行分析和模拟功能的函数中的难点对象,如波德sim卡

  • 检索或解释模型信息的函数,例如建议getpar

  • 功能转换中的难点对象转换为不同的模型类型,例如idpoly或者idtf对于时域或idfrd对于连续领域

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

全部展开

佳能 状态空间实现规范化
ss2ss 状态空间模型的状态坐标转换
balred 模型降阶
translatecov 在模型转换操作之间转换参数协方差
setpar 设置属性,例如线性模型参数的值和界限
chgtimeUnit. 改变动态系统的时间单位
D2D. 重新采用离散时间模型
D2C. 将模型从离散时间转换为连续时间
汇集 将模型从连续时间转换为离散时间
合并 合并估计模型

全部展开

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

全部展开

idssdata 被识别系统的状态空间数据
得到 访问模型属性值
getpar 获取属性,如值和线性模型参数的边界
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.是第四阶SISO吗中的难点模型。状态数和输入输出维数由状态空间矩阵的维数决定。默认情况下,是矩阵中的所有项一个BCD,和K是可识别的参数。

你可以使用SYS.为状态空间模型估计指定初始参数化党卫军或者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 =“扭矩”

配置一个中的难点模型中没有状态扰动元素,只有非零项一个矩阵是有价值的。另外,修复B矩阵。

可以配置单个参数中的难点模型来指定状态空间模型估计的约束条件党卫军或者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);

设置的所有条目K到目前为止0创建一个中的难点无状态扰动元的模型。

使用结构属性来固定某些参数的值。

sys.Structure.A.Free = ~ = 0);sys.Structure.B.Free = false;sys.Structure.K.Free = false;

参赛作品sys.Structure.A.Free确定是否有相应的条目sys。一个是自由的(可识别的)还是固定的。第一行集合sys.Structure.A.Free变成一个逻辑矩阵真实无论一个是零,其他地方。此设置修复了中0项的值sys。一个

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

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

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

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

Num = [1 4];Den = [1 20 5];G = idtf (num穴)
G = S + 4 ------------- S ^ 2 + 20 s + 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 维整数数组

  • 通过索引赋值建立数组

  • Array-building使用堆栈命令

  • 对已识别的模型进行抽样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);

第一个命令预先分配阵列。数组的前两个维度是数组中每个模型的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