主要内容

idproc

具有可识别参数的连续时间过程模型

描述

一个idproc模型将系统表示为具有可估计系数的连续时间过程模型。使用idproc创建流程模型。

一个简单的SISO过程模型具有增益、时间常数和延迟:

年代 y 年代 K p 1 + T p 1 年代 e T d 年代

Kp是成比例增益,Tp1实极的时间常数是Td是传输延迟(死时间)。

更普遍的是,idproc可以表示最多三个极点和一个零的流程模型:

年代 y 年代 K p 1 + T z 年代 1 + T p 1 年代 1 + T p 2 年代 1 + T p 3. 年代 e T d 年代

其中两个极点可以是复共轭(欠阻尼)对。在这种情况下,流程模型的一般形式为:

年代 y 年代 K p 1 + T z 年代 1 + 2 ζ T ω 年代 + T ω 年代 2 1 + T p 3. 年代 e T d 年代

Tω复极对的时间常数是和吗ζ是相关的阻尼常数。

此外,任何idproc模型可以有一个积分器。例如,下面是您可以使用的流程模型idproc

年代 y 年代 K p 1 年代 1 + 2 ζ T ω 年代 + T ω 年代 2 e T d 年代

这个模型没有零(Tz= 0)和复极对。该模型也有一个积分器,用1/表示年代术语。

idproc模型中,所有的时间常数、延时、比例增益和阻尼系数都是可估计的参数。的idproc模型将这些参数的值存储在模型的属性中,例如KpTp1,ζ.(见属性以获取更多信息。)

MIMO流程模型包含与系统中每个输入/输出对对应的SISO流程模型。为idproc模型中,每个输入/输出对的形式可以独立指定。例如,一个双输入一输出过程可以有一个有两个极点但没有零的通道,而另一个通道有一个零、一个极点和一个积分器。所有系数都是可独立估计的参数。

创建

有两种方法可以得到idproc模型:

  • 估计idproc基于系统输入/输出测量的模型过程命令。过程估计自由参数的值,如增益、时间常数和时间延迟。估计值作为结果的属性存储idproc模型。例如,属性sys。Tz而且sys。Kp一个idproc模型sys分别存储0时间常数和比例增益。的报告属性存储关于估计的信息,例如初始条件的处理和估计中使用的选项。例如,您可以使用以下命令来估计和获取关于一阶流程模型的信息。

    Sys = process(数据,“P1”);KP = sys。Kp sys。报告
    欲了解更多有关idproc属性,看到属性

    当你获得idproc通过估计建模,您可以使用以下命令从模型中提取估计的系数及其不确定性getpar而且getcov

  • 创建一个idproc使用idproc命令。

    您可以创建idproc模型来配置用于估计流程模型的初始参数化。当您这样做时,您可以对参数指定约束。例如,您可以固定某些系数的值或指定自由系数的最小或最大值。然后,您可以使用配置的模型作为的输入参数过程用这些约束估计参数值。例如,修复的值Tp11的值Kp1一系列的(0.3 - 0.6)

    init_sys.Structure。Tp1 = 1;init_sys.Structure.Tp1。Free = False;init_sys.Structure.Kp1。Min = 0.3;init_sys.Structure.Kp1。Max = 0.6;Sys = process (data,init_sys)
    有关配置和使用初始参数化的详细信息,请参见过程

有关可用于从中提取信息或转换信息的函数的信息idproc建模对象,请参见对象的功能

描述

例子

sys= idproc(类型)创建具有可估计参数的连续时间流程模型,并设置类型财产。类型指定模型结构的各个方面,例如模型中的极点数、模型是否包含积分器以及模型是否包含时间延迟。

sys= idproc(类型,名称,值创建具有一个或多个名称-值参数指定的属性的流程模型。

属性

全部展开

模型结构,指定为字符向量、字符串或字符向量或字符串的单元格数组。

对于SISO模型sys,属性sys。类型包含指定系统结构的字符向量或字符串。例如,“P1D”指定具有一个极点和一个时间延迟的流程模型。

对于MIMO模型纽约输出和ν输入,sys。类型是一个纽约——- - - - - -ν由字符向量或字符串组成的单元格数组,指定模型中每个输入/输出对的结构。例如,类型{i, j}指定子系统的结构系统(i, j)j的Th输入输出。

类型规范由下列指定模型结构方面的一个或多个字符组成:

字符 意义
Pk 一个流程模型k极点(不包括积分器)。k为0、1、2或3。
Z 流程模型包括一个零(Tz≠0). a类型P0不能包含Z(没有极点的流程模型不能包含零)。
D 流程模型包括时间延迟(死时间)。
流程模型包括一个积分器(1/年代).
U 流程模型是欠阻尼的。在这种情况下,流程模型包括一对复杂的极点

每一个类型规格说明必须以其中之一开始P0P1P2,或P3.所有其他字符都是可选的。例如:

  • “P1D”指定具有一个极点和一个死区项的流程模型:

    年代 y 年代 K p 1 + T p 1 年代 e T d 年代

    KpTp1,道明是该模型的可估计参数。

  • “P2U”创建具有一对复杂极点的流程模型:

    年代 y 年代 K p 1 + 2 ζ T ω 年代 + T ω 年代 2

    Kp太瓦,ζ是该模型的可估计参数。

  • “P3ZDI”创建具有三个极点的流程模型。所有的极点都是真实的,因为U不包括在内。该模型还包括一个零点、一个延时和一个积分器:

    年代 y 年代 K p 1 + T z 年代 年代 1 + T p 1 年代 1 + T p 2 年代 1 + T p 3. 年代 e T d 年代

    该模型的可估计参数为KpTzTp1Tp2Tp3,道明

特定模型结构中所有参数的值初始化为.您可以通过设置相应的值来将它们更改为有限值idproc创建模型后的模型属性。例如,sys。道明=5的时间延迟的初始值sys到5个时间单位。

用于MIMO过程模型纽约输出和ν输入,类型是一个纽约——- - - - - -ν由字符向量或字符串组成的单元格数组,指定模型中每个输入/输出对的结构。例如,类型{i, j}指定了类型子系统的系统(i, j)j的Th输入y输出。

如果你创建一个idproc模型sys使用idproc命令,sys。类型属性指定的模型结构类型输入参数。

如果你有idproc通过使用识别进行建模过程,然后sys。类型包含您为该标识指定的模型结构。

一般来说,您不能更改现有模型的类型。但是,您可以使用该属性更改模型是否包含积分器sys。我ntegration

关于指定的例子类型关于不同的模型结构,请参见:

例子:type = idproc("P2DU")

例子:"P2ZDI";"P2Z";"P2ZI"};Sys = idproc(type)

流程模型参数的值,指定为S,数字标量,单元格数组,或者0s.如果您使用idproc命令创建idproc使用指定的模型结构进行建模类型时,模型结构中所有参数的值默认初始化为.模型结构中未出现的参数值固定为0.例如,如果您创建一个模型sys类型的“P1D”,然后KpTp1,道明初始化为和是可识别(自由)参数。所有剩余参数,如Tp2而且Tz,在模型中是不活跃的。非活动参数的值固定为零,不能更改。

对于MIMO模型纽约输出和ν输入时,每个参数值为一个纽约——- - - - - -ν字符向量或字符串的单元格数组,为模型中的每个输入/输出对指定相应的参数值。例如,sys.Kp (i, j)指定了Kp子系统值系统(i, j)j的Th输入输出。

对于一个idproc模型sys,每个参数值属性如sys。Kpsys。Tp1sys。Tz,其他则是对应的别名价值进入结构的属性sys.例如,sys。Tp3属性值的别名吗sys.Structure.Tp3.Value

积分器存在指示器,指定为一个逻辑值或矩阵,表示在流程模型的传递函数中是否存在积分器。

对于SISO模型syssys。我ntegration真正的如果模型包含积分器。

对于MIMO模型,sys.Integration (i, j)真正的如果传递函数j的Th输入输出包含一个积分器。

类创建流程模型时idproc的值sys。我ntegration是由是否对应决定的类型包含

噪声传递函数的系数,指定为结构的形式结构(“num”{num2cell ((Ny, 1))},“窝”,{num2cell ((Ny, 1))})sys。NoiseTF存储噪声传递函数的分子和分母多项式的系数H年代) =N年代) /D年代).

sys。NoiseTF结构是否包含字段全国矿工工会而且.的单元格数组Ny行向量,其中Ny输出的数量是多少sys.这些行向量指定了噪声传递函数分子和分母的系数,它们的幂递减年代

一般情况下,噪声传递函数由估计函数自动计算过程.你可以指定一个噪声传递函数过程用作初始值。例如:

NoiseNum = {[1 2.2];0.54 [1]};NoiseDen = {[1 1.3];[1 - 2]};NoiseTF = struct(“num”{NoiseNum},“穴”, {NoiseDen});Sys = idproc({“p2”“p1di”});% 2-输出,1-输入流程模型sys。NoiseTF = NoiseTF;

中的每个向量sys.NoiseTF.num而且sys.NoiseTF.den长度必须小于等于3(在年代或更少)。每个向量必须从1开始。分子向量的长度必须等于对应的分母向量的长度,因此H年代)总是一分为二的。

属性的可估计参数的特定属性信息idproc模型,指定为结构。

sys。结构的模型结构中的每个参数都包含一个条目sys.例如,如果sys是类型的“P1D”,然后sys包括可估计参数KpTp1,道明.相应地,sys.Structure.Kpsys.Structure.Tp1,sys.Structure.Td分别包含关于这些参数的信息。

这些参数中的每一个sys。结构包含以下字段。

描述 例子
价值 参数值 sys.Structure.Kp.Value属性的初始值或估计值Kp参数。在SISO案例中,sys。Kp此属性值的别名。在MIMO案例中,sys。Kp{i,j}是属性的别名吗sys.Structure .Kp.Value (i, j)
最低 参数在估计过程中可以假定的最小值。 sys.Structure.Kp.Minimum = 1将比例增益限制为大于或等于1的值。
最大 参数在估计过程中可以假定的最大值。 sys.Structure.Kp.Maximum = 2限制比例增益值小于或等于2。
免费的 布尔值,指定参数是否为自由估计变量。如果需要在估计过程中固定某个参数的值,请设置相应的参数免费的价值

以下命令修复死时间道明5

sys。道明=5;sys.Structure.Td.Free = false;

规模 参数值的比例。估计算法不使用规模
信息 包含字段的结构数组标签而且单位用于存储参数标签和单位。指定参数标签和单位为字符向量。 sys.Structure.Td.Info = struct("Label","Delay","Unit","seconds")存储延迟的标签和单位道明在几秒钟内。

结构还包括一个字段集成存储一个逻辑数组,该数组指示每个对应的流程模型是否具有积分器。sys.Structure.Integration的别名。sys。我ntegration

对于MIMO模型纽约输出和ν输入,结构是一个纽约——- - - - - -ν数组中。的元素结构(i, j)属性的流程模型对应的信息(i, j)输入/输出。

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

  • SISO模型-标量

  • MIMO模型Ny输出-Ny——- - - - - -Ny正半定矩阵

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

此属性是只读的。

方法获得过程模型时,包含有关估计选项和结果的信息的摘要报告过程估计命令。使用报告查询一个模型的估计方法,包括:

  • 估算方法

  • 估计选项

  • 查询终止条件

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

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

M = idproc(“P2DU”);m.Report.OptionsUsed
Ans = []

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

负载iddata2z2;M = process (z2,“P2DU”);m.Report.OptionsUsed
invancemodel: 'estimate' InitialCondition: 'auto' Focus: 'prediction' estimateco方差:1显示:'off' InputOffset: [1x1参数。连续的]OutputOffset:[]正则化:[1x1 struct] SearchMethod: 'auto' SearchOptions: [1x1 idoptions.search。identsolver] OutputWeight:[]高级:[1x1 struct]

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

每个输入通道的输入延迟,指定为标量值或数字向量。属性中存储的时间单位指定输入延迟TimeUnit财产。

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

你也可以设置InputDelay到一个标量值,以便对所有通道应用相同的延迟。请注意,InputDelay是分开的道明动态属性,表示可估计的IO延迟。InputDelay不是一个可估计的参数。总延迟对应于这些属性值的和。

对于已识别的系统,例如idprocOutputDelay固定为零。

样品时间。为idprocTs是固定为零,因为所有idproc模型是连续时间的。

模型时间单位,指定为以下值之一:

  • “纳秒”

  • 微秒的

  • 的毫秒

  • “秒”

  • “分钟”

  • “小时”

  • “天”

  • “周”

  • “月”

  • “年”

你可以指定TimeUnit使用字符串,例如“小时”,但时间单位存储为字符向量,“小时”

建模属性,如采样时间TsInputDelayOutputDelay的单位表示,其他时延用TimeUnit.更改此属性不会对其他属性产生影响,因此会改变整个系统行为。使用chgTimeUnit在时间单位之间转换而不修改系统行为。

输入通道的名称,指定为以下值之一:

  • 字符向量-用于单输入模型

  • 字符向量的单元数组-用于具有两个或多个输入的模型

  • —对于没有指定名称的输入

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

sys。我nputName =“控制”

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

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

输入通道名有几种用途,包括:

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

  • 提取MIMO系统的子系统

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

你可以指定InputName使用字符串,例如“电压”,但输入名称存储为字符向量,“电压”

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

输入信号的单位,用下列值之一表示:

  • 字符向量-用于单输入模型

  • 字符向量的单元数组-用于具有两个或多个输入的模型

  • -对于没有指定单位的输入

使用InputUnit为了跟踪每个输入信号的表达单位。InputUnit对系统行为没有影响。

你可以指定InputUnit使用字符串,例如“电压”,但输入单位存储为字符向量,“电压”

例子:“电压”

例子:{“电压”,“转”}

输入通道组,指定为一个结构,其中字段是组名,值是属于相应组的输入通道的索引。当你使用InputGroup将MIMO系统的输入通道分配给组,需要访问时可以通过名称引用每个组。例如,假设您有一个五个输入的模型sys,其中前三个输入为控制输入,其余两个输入为噪声。的控制和噪声输入sys将各组分开。

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

使用组名将子系统从控制输入提取到所有输出。

sys (:,“控制”

例子:结构(“控制”,[1:3],“噪声”,[4 - 5])

输出通道的名称,指定为以下值之一:

  • 字符矢量-用于单输出模型

  • 字符向量的单元数组-用于具有两个或多个输出的模型

  • —不指定名称的输出

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

sys。OutputName =“测量”

输出名称自动展开为{“测量(1)”,“测量”(2)}

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

输出通道名有几种用途,包括:

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

  • 提取MIMO系统的子系统

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

你可以指定OutputName使用字符串,例如“转”,但输出名称存储为字符向量,“转”

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

输出信号的单位,指定为下列值之一:

  • 字符矢量-用于单输出模型

  • 字符向量的单元数组-用于具有两个或多个输出的模型

  • —用于没有指定单位的输出

使用OutputUnit为了跟踪每个输出信号的表达单位。OutputUnit对系统行为没有影响。

你可以指定OutputUnit使用字符串,例如“电压”,但输出单位存储为字符向量,“电压”

例子:“电压”

例子:{“电压”,“转”}

输出通道组,指定为一个结构,其中字段是组名,值是属于相应组的输出通道的索引。当你使用OutputGroup将MIMO系统的输出通道分配给组,需要访问时可以通过名称引用每个组。例如,假设您有一个四输出模型sys,其中第二个输出是温度,其余是状态测量。将这些输出分配给单独的组。

sys.OutputGroup.temperature = [2];sys.OutputGroup.measurements = [1 3 4];

使用组名将子系统从所有输入提取到测量输出。

系统(“测量”:)

例子:Struct ('temperature',[2],'measurement',[1 3 4])

模型名称,存储为字符向量。你可以指定的名字使用字符串,例如“DCmotor”,但输出单位存储为字符向量,“DCmotor”

例子:“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是一个数组,包含分别在RPMS 1000、5000和10000处获得的三个已标识的模型。

用于通过线性化Simulink生成的模型数组金宝app®在多个参数值或工作点建模,软件进行填充SamplingGrid自动使用对应于数组中每个条目的变量值。例如,金宝appSimulink控制设计™命令线性化(金宝appSimulink控制设计)而且slLinearizer(金宝appSimulink控制设计)填充SamplingGrid这样。

对象的功能

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

  • 操作并返回的函数idproc模型对象使您能够转换和操作idproc模型。例如,使用合并合并估计idproc模型。

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

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

  • 转换的函数idproc对象转换为不同的模型类型,例如idpoly对于时域或idfrd对于频域

下面的列表包含您可以使用的函数的一个代表性子集idproc模型。

全部展开

translatecov 在模型转换操作中转换参数协方差
setpar 设置线性模型参数的值和边界等属性
chgTimeUnit 改变动态系统的时间单位
合并 合并估计模型

全部展开

sim卡 模拟识别模型的响应
预测 利用扩展卡尔曼滤波或无气味卡尔曼滤波或粒子滤波预测下一时刻的状态和状态估计误差协方差
比较 比较识别的模型输出和测量的输出
冲动 动态系统的脉冲响应图;脉冲响应数据
一步 动态系统的阶跃响应图;阶跃响应数据
波德 波德图的频率响应,或幅度和相位数据

全部展开

tfdata 访问传递函数数据
得到 访问模型属性值
getpar 获取线性模型参数的值、边界等属性
getcov 确定模型的参数协方差
建议 对数据或估计线性模型的分析和建议

全部展开

idtf 具有可识别参数的传递函数模型
idpoly 具有可识别参数的多项式模型
中的难点 具有可识别参数的状态空间模型
idfrd 频响数据或模型

例子

全部折叠

创建具有一对复杂极点和一个时间延迟的流程模型。设置模型的初始值如下:

年代 y 年代 0 0 1 1 + 2 0 1 1 0 年代 + 1 0 年代 2 e - 5 年代

使用指定的结构创建流程模型。

Sys = idproc(“P2DU”
sys =带传递函数的过程模型:Kp G(s) = --------------------- * exp(-Td*s) 1+2*Zeta*Tw*s+(Tw*s)^2 Kp = NaN Tw = NaN Zeta = NaN Td = NaN参数化:{'P2DU'}自由系数数:4参数及其不确定性使用"getpvec", "getcov"。现状:由直接构建或改造而产生。不估计。

输入“P2DU”指定欠阻尼极点对和时间延迟。显示屏显示sys具有所需的结构。显示器还显示了四个自由参数,Kp太瓦ζ,道明都初始化为

将所有参数的初始值设置为需要设置的值。

sys。Kp=0.01;sys。太瓦=10;sys。ζ= 0.1; sys.Td = 5;

你可以使用sys指定此参数化和用于流程模型估计的这些初始猜测过程

创建一个一输入三输出流程模型,其中每个通道有两个实极和一个零,但只有第一个通道有时间延迟,只有第一和第三个通道有积分器。

类型= [“P2ZDI”“P2Z”“P2ZI”];Sys = idproc(type)
求和sys = 3输出过程模型:k = Gk (s)从输入1输出1 u: 1 + Tz * s G1 (s) = Kp  * ------------------- * exp (Td *)年代(1 + Tp1 * s) (1 + Tp2 * s) Kp =南Tp1 Td =南Tz = =南Tp2 =南南从输入1输出2:1 + Tz * s G1 (s) = Kp  * ------------------ ( 1 + Tp1 * (s) (1 + Tp2 * s) Kp =南Tp1 =南Tp2 =南Tz =南从输入1输出3:1 + Tz * s G1 (s) = Kp  * ------------------- (1 + Tp1 *年代)(1 + Tp2 * s) Kp =南Tp1 =南Tp2 =南Tz =南参数化:{'P2DIZ'} {'P2Z'} {'P2IZ'}自由系数数:13使用"getpvec", "getcov"表示参数及其不确定性。现状:由直接构建或改造而产生。不估计。

idproc创建一个MIMO模型,其中的每个字符向量类型array定义了对应I/O对的结构。自类型是字符向量的列向量,sys是具有指定参数化结构的一输入三输出模型。类型{k, 1}指定子系统的结构sys (k, 1).所有可识别的参数都初始化为

创建一个3乘1的流程模型数组,每个数组包含一个输出和两个输入通道。

为流程模型数组中的每个模型指定结构。

Type1 = [“P1D”“P2DZ”];Type2 = [“P0”“P3UI”];Type3 = [“P2D”“P2DI”];Type = cat(3,type1,type2,type3);大小(类型)
ans =1×31 2 3

使用类型创建数组。

Sysarr = idproc(type);

单元格数组的前两个维度类型在流程模型数组中设置每个模型的输出和输入维度。单元格数组的其余尺寸设置数组尺寸。因此,sysarr是一个由两输入一输出流程模型组成的三模型数组。

从数组中选择一个模型。

sysarr (:: 2)
ans =有两个输入的过程模型:y = G11(s)u1 + G12(s)u2从输入1到输出1:G11(s) = Kp Kp = NaN从输入2到输出1:Kp G12(s) = --------------------------------- s(1+2*Zeta*Tw*s+(Tw*s)^2)(1+Tp3*s) Kp = NaN Tw = NaN Zeta = NaN Tp3 = NaN参数化:{'P0'} {'P3IU'}自由系数数:5使用"getpvec", "getcov"表示参数及其不确定性。现状:由直接构建或改造而产生。不估计。

这个双输入一输出模型对应于类型2进入类型单元阵列。

版本历史

R2006a之前介绍