主要内容

中的难点

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

描述

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

一个带有输入向量的系统的状态空间模型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 = ssest(data,nx);A = sys.A;B = sys.B;sys。报告

    更多关于估算an的例子中的难点模型中,看到党卫军n4sid

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

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

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

    Sys_ss = idss(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,x0Ts)指定采样时间属性Ts.使用Ts = 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,'split')sys0必须为数字(未识别)特遣部队(控制系统工具箱)zpk(控制系统工具箱),或党卫军(控制系统工具箱)模型对象。同时,sys0至少要有和输出一样多的输入。最后是子系统纽约sys0(: + 1:纽约+ν)必须包含非零馈通项(子系统必须是双固有的)。

属性

全部展开

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

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

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

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

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

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

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

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

对于一个中的难点模型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输入参数。

对于一个中的难点模型syssys。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矩阵大于或等于零。
最大 参数在估计过程中可以假定的最大值
免费的 布尔值,指定参数是否为自由估计变量。如果需要在估计过程中固定某个参数的值,请设置相应的参数免费= false 如果一个是一个3 × 3矩阵,sys.Structure.A.Free = eyes(3)修复了所有非对角线的元素一个中指定的值sys.Structure.A.Value.在这种情况下,只有对角线元素一个是有价值的。
规模 参数值的比例。估计算法不使用规模
信息 包含字段的结构数组标签而且单位用于存储参数标签和单位。指定参数标签和单位为字符向量。 “时间”

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

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

  • SISO模型-标量

  • MIMO模型Ny输出-Ny——- - - - - -Ny矩阵

所识别的模型包含高斯白噪声分量et).NoiseVariance是这个噪声分量的方差。通常,模型估计函数(如党卫军)决定这个方差。

此属性是只读的。

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

  • 估算方法

  • 估计选项

  • 查询终止条件

  • 估计数据拟合和其他质量度量

如果您通过构造创建模型,则报告是无关紧要的。

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

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

负载iddata2z2;M = sest(z2,3);m.Report.OptionsUsed
InitialState: 'auto' N4Weight: 'auto' N4Horizon: 'auto' Focus: 'prediction' EstimateCovariance: 1 Display: 'off' InputOffset: [] OutputOffset: [] OutputWeight: [] SearchMethod: 'auto' SearchOptions: [1x1 idoptions.search. search.]identsolver]正则化:[1x1结构]高级:[1x1结构]

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

每个输入通道的输入延迟,指定为标量值或数字向量。方法中存储的时间单位指定输入延迟TimeUnit财产。对于离散时间系统,指定输入延迟为采样时间的整数倍Ts.例如,设置InputDelay3.指定三个采样时间的延迟。

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

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

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

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

  • 连续时间模型-0

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

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

更改此属性不会对模型进行离散化或重新采样。使用汇集而且d2c在连续时间表示和离散时间表示之间进行转换。使用d2d改变离散时间系统的采样时间。

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

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

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

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

  • 多输入模型-字符向量的单元数组。

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

sys。InputName = 'controls';

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

当你估计一个模型使用iddata对象数据,软件自动设置InputName数据。InputName

你可以用速记法u请参阅InputName财产。例如,sys.u等于sys。InputName

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

  • 识别模型显示和图上的通道

  • 提取MIMO系统的子系统

  • 在连接模型时指定连接点

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

  • 单输入模型-字符向量

  • 多输入模型-字符向量的单元数组

使用InputUnit跟踪输入信号单位。InputUnit对系统行为没有影响。

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

例如,创建名为控制而且噪音分别包括输入通道1、2和3、5。

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

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

sys(:,“控制”)

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

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

  • 多输入模型-字符向量的单元数组。

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

sys。OutputName = 'measurements';

输出名称自动展开为{“测量(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”

希望与系统关联的任何文本,指定为字符串或字符向量的单元格数组。属性存储您提供的任何数据类型。例如,如果sys1而且sys2系统模型都是动态的,你可以自己设置吗笔记属性如下。

sys1。笔记=sys1有一个字符串。;sys2。笔记=sys2有一个字符向量;sys1。笔记sys2。笔记
Ans = "sys1有一个字符串" Ans = " sys2有一个字符向量"

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

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

对于通过对一个或多个自变量采样而得到的已识别线性(IDLTI)模型数组,此属性跟踪与每个模型相关的变量值。当您显示或绘制模型数组时,将显示此信息。使用这些信息将结果追溯到自变量。

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

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

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

在这里,sys包含分别以1000,5000和10000 rpm获得的三个已标识的型号的数组。

对于通过线性化Simulink生成的模型数组金宝app®在多个参数值或工作点建模,软件进行填充SamplingGrid自动使用对应于数组中每个条目的变量值。

对象的功能

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

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

    • 使用佳能变换中的难点模型转化为标准形式

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

    • 使用汇集转换中的难点从连续时间到离散时间。使用d2c转换中的难点从离散时间到连续时间。

  • 在上面执行分析和模拟功能的函数中的难点对象,例如波德而且sim卡

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

  • 转换的函数中的难点对象转换为不同的模型类型,例如idpolyidtf对于时域或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 10 0];D = 0;K = 0 (4,1);X0 = [0.1,0.1,0.1,0.1];Ts = 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 10 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 10 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。一个自由的(可识别的)或固定的。第一行集合sys.Structure.A.Free到一个逻辑矩阵真正的无论一个非零,和其他地方。该设置修复了零条目的值sys。一个

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

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

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

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

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

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

sys0 = idss(G)
sys0 =连续时间识别状态空间模型:dx/dt = ax (t) + B u(t) + K e(t) y(t) = C x(t) + D u(t) + e(t) A = x1 x2 x1 -20 -2.5 x2 20 B = u1 x1 2 x2 0 C = x1 x2 y1 0.5 1 D = u1 y1 0 K = y1 x1 0 x2 0参数化:FREE形式(所有系数在A, B, C中自由)。馈通:无扰动分量:无自由系数数:8参数及其不确定性用“idssdata”、“getpvec”、“getcov”表示。现状:由直接构建或改造而产生。不估计。

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

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

  • 使用直接阵列构造 n -维状态空间数组

  • 通过索引赋值构建数组

  • 数组构建使用堆栈命令

  • 方法对已识别的模型进行抽样rsample命令

通过提供来创建数组 n 的输入参数中的难点,而不是二维矩阵。

A = rand(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 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 1],0));

这个命令添加了另一个中的难点的第一个数组维进行建模sysarrsysarr现在是一个3乘1的SISO数组中的难点模型。

在R2006a中引入