主要内容

idtf

具有可识别参数的传递函数模型

描述

一个idtf模型将系统表示为具有可识别(可估计)系数的连续时间或离散时间传递函数。使用idtf创建传递函数模型,或进行转换动态系统模型传递函数形式。

SISO传递函数是多项式与指数项的比值。在连续时间下,

G 年代 e τ 年代 b n 年代 n + b n 1 年代 n 1 + ... + b 0 年代 + 一个 1 年代 1 + ... + 一个 0

在离散时间下,

G z 1 z k b n z n + b n 1 z n + 1 + ... + b 0 z + 一个 1 z + 1 + ... + 一个 0

在离散时间下,z- - - - - -k表示的时间延迟kT年代,在那里T年代是采样时间。

idtf模型,分母系数一个0、……一个1分子系数b0、……bn是可估计的参数。(前面的分母系数总是固定为1。)时间延迟τ(或k在离散时间中)也可以是一个可估计的参数。的idtf模型存储多项式系数一个0、……一个1而且b0、……bn分母而且分子模型的属性。时间延迟τk存储在IODelay模型的属性。

不像中的难点而且idpolyidtf将noise参数固定为1而不是参数化它。所以,在 y G u + H e H= 1。

MIMO传递函数包含与系统中每个输入-输出对对应的SISO传递函数。为idtf每个输入-输出对的模型、多项式系数和传输延迟是独立可估计的参数。

创建

你可以获取idtf用以下三种方法之一对对象建模。

  • 估计idtf基于系统输入-输出测量的模型特遣部队.的特遣部队命令估计传递函数系数和传输延迟的值。估计的值存储在分子分母,IODelay结果的属性idtf模型。在引用分子和分母属性时,可以使用快捷键全国矿工工会而且.的报告属性存储关于估计的信息,例如初始条件的处理和估计中使用的选项。例如,您可以使用以下命令来估计和获取关于传递函数的信息。

    Sys = tfest(data,nx);num = sys.分子;Den = sys.den;sys。报告

    更多关于估算an的例子idtf模型中,看到特遣部队

    当你获得idtf通过估计建立模型,您可以从模型中提取估计的系数及其不确定性。要做到这一点,可以使用tfdatagetpar,或getcov

  • 创建一个idtf使用idtf命令。例如,创建一个idtf用指定的分子和分母进行建模。

    Sys = idtf(num,den)
    您可以创建idtf模型,以配置传递函数估计的初始参数化,以拟合测量的响应数据。当您这样做时,您可以指定分子和分母系数以及传输延迟等值的约束。例如,您可以修复某些参数的值,或者为自由参数指定最小或最大值。然后,您可以使用配置的模型作为的输入参数特遣部队用这些约束估计参数值。有关示例,请参见创建连续时间传递函数模型而且创建离散时间传递函数

  • 将现有的动态系统模型转换为idtf使用idtf命令。例如,转换状态空间模型sys_ss转换成传递函数。

    Sys_tf = idtf(sys_ss);
    有关更详细的示例,请参见可识别状态空间模型转换为可识别传递函数

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

描述

创建传递函数模型

例子

sys= idtf(分子、分母)创建具有可识别参数的连续时间传递函数模型。分子指定传递函数分子系数的当前值。分母指定传递函数分母系数的当前值。

例子

sys= idtf(分子、分母Ts)创建一个带有采样时间的离散传递函数模型Ts

例子

sys= idtf (___名称,值属性创建传递函数属性由一个或多个指定的名称,值对参数。在前面语法中的任何输入参数组合之后指定名称-值对参数。

将动态系统模型转换为传递函数模型

例子

sys= idtf (sys0转换任何动态系统模型sys0idtf模型形式。

输入参数

全部展开

任何动态系统都可以转换为idtf模型。

sys0是一个已识别的模型,其估计的参数协方差在转换过程中丢失。如果您希望在转换过程中转换估计的参数协方差,请使用translatecov

属性

全部展开

传递函数分子系数的值,指定为行向量或单元格数组。

对于SISO传递函数,分子系数的值按以下顺序存储为行向量:

  • 降幂年代p(用于连续时间传递函数)

  • 上升幂z11(用于离散时间传递函数)

任何初值未知的系数都存储为

对于MIMO传递函数具有纽约输出和ν输入,分子是一个纽约——- - - - - -ν每个输入/输出对的分子系数单元阵列。有关MIMO传递函数的示例,请参见创建MIMO离散时间传递函数

如果你创建一个idtf模型sys使用idtf命令,sys。ν米erator属性指定的分子系数的初值分子输入参数。

如果你有idtf通过使用识别进行建模特遣部队,然后sys。ν米erator包含分子系数的估计值。

对于一个idtf模型sys,属性sys。ν米erator属性值的别名吗sys.Structure.Numerator.Value

传递函数分母系数的值,指定为行向量或单元格数组。

对于SISO传递函数,分母系数的值按如下顺序存储为行向量:

  • 降幂年代p(用于连续时间传递函数)

  • 上升幂z11(用于离散时间传递函数)

的领先系数分母固定为1。任何初值未知的系数都存储为

对于MIMO传递函数具有纽约输出和ν输入,分母是一个纽约——- - - - - -ν每个输入-输出对的分母系数单元格数组。有关MIMO传递函数的示例,请参见创建MIMO离散时间传递函数

如果你创建一个idtf模型sys使用idtf命令,sys。Denominator属性指定的分母系数的初值分母输入参数。

如果你有idtf模型sys通过识别和使用特遣部队,然后sys。Denominator包含分母系数的估计值。

对于一个idtf模型sys,属性sys。Denominator属性值的别名吗sys.Structure.Denominator.Value

传递函数显示变量,指定为以下值之一:

  • “年代”-默认为连续时间模型

  • “p”-相当于“年代”

  • “z ^ 1”-默认为离散时间模型

  • “问^ 1”-相当于“z ^ 1”

的价值变量是体现在展示上,也是影响解读的分子而且分母离散时间模型的系数向量。当变量设置为“z ^ 1”“问^ 1”时,系数向量按变量的升幂排序。

的例子变量财产,看到指定传递函数显示变量

传输延迟,指定为一个数字数组,其中包含每个输入-输出对的单独传输延迟。

中存储的时间单位表示传输延迟TimeUnit财产。对于离散时间系统,传输延迟用整数表示,表示延迟是采样时间的倍数Ts

对于MIMO系统纽约输出和ν输入,设置IODelay作为一个纽约——- - - - - -ν数组中。该数组的每个条目都是一个数值,表示对应输入-输出对的传输延迟。你可以设置IODelay对所有输入-输出对应用相同的延迟。

如果你创建一个idtf模型sys使用idtf命令,然后sys。IODelay包含使用名称-值对参数指定的传输延迟的初始值。

如果你有idtf模型sys通过识别和使用特遣部队,然后sys。IODelay包含传输延迟的估计值。

对于一个idtf模型sys,属性sys。IODelay属性值的别名吗sys.Structure.IODelay.Value

属性的可估计参数的特定属性信息idtf模型,指定为单个结构或结构数组。

  • SISO系统-结构单一。

  • MIMO系统纽约输出和ν输入- - -纽约——- - - - - -ν数组中。的元素结构(i, j)属性的传递函数对应的信息(i, j)输入-输出。

结构。分子结构。Denominator,结构。IODelay分别包含分子系数、分母系数和传输延迟的信息。中的每个参数结构包含以下字段。

描述 例子
价值 参数值。每个属性都是对应属性的别名价值进入结构的属性sys表示未知参数值。 sys.Structure.Numerator.Value包含SISO分子系数的初始值或估计值。sys。ν米erator此属性值的别名。sys。ν米erator{i,j}是MIMO属性的别名吗sys.Structure .Numerator.Value (i, j)
最低 参数在估计过程中可以假定的最小值。 sys.Structure.IODelay.Minimum = 0.1将传输延迟限制为大于或等于0.1的值。sys.Structure.IODelay.Minimum必须大于或等于零。
最大 参数在估计过程中可以假定的最大值。 sys.Structure.IODelay.Maximum = 0.5将传输延迟限制为小于或等于0.5的值。sys.Structure.IODelay.Maximum必须大于或等于零。
免费的 布尔值,指定参数是否为自由估计变量。如果需要在估计过程中固定某个参数的值,请设置相应的参数免费的价值.对于分母,的值免费的对于领先系数,由sys.Structure.Denominator.Free (1),总是(主要分母系数总是固定为1)。 sys.Structure.Denominator.Free = false固定所有的分母系数sys中指定的值sys.Structure.Denominator.Value
规模 参数值的比例。估计算法不使用规模
信息 包含字段的结构数组标签而且单位用于存储参数标签和单位。指定参数标签和单位为字符向量。 “时间”

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

  • SISO模型-标量

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

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

此属性是只读的。

包含有关使用估计命令获得的传递函数模型的估计选项和结果的信息的摘要报告,例如特遣部队而且冲动.使用报告查找已识别模型的估计信息,包括:

  • 估算方法

  • 估计选项

  • 查询终止条件

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

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

Sys = idtf([1 4],[1 20 5]);sys.Report.OptionsUsed
Ans = []

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

负载iddata2z2;Sys = tfest(z2,3);sys.Report.OptionsUsed
InitializeMethod: 'iv' InitializeOptions: [1×1 struct] InitialCondition: 'auto'显示:'off' InputOffset: [] OutputOffset: [] EstimateCovariance: 1正则化:[1×1 struct] SearchMethod: 'auto' SearchOptions: [1×1 idoptions.search.]identsolver] WeightingFilter: [] EnforceStability: 0 OutputWeight: [] Advanced: [1×1 struct]

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

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

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

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

估计将InputDelay作为模型的固定常数。估计使用IODelay属性用于估计时间延迟。若要指定用于估计时间延迟的初始值和约束,请使用sys.Structure.IODelay

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

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

  • 连续时间模型-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自动使用对应于数组中每个条目的变量值。

对象的功能

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

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

    • 使用合并合并估计idtf模型。

    • 使用汇集转换idtf从连续时间到离散时间。使用d2c转换idtf从离散时间到连续时间。

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

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

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

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

全部展开

translatecov 在模型转换操作中转换参数协方差
setpar 设置线性模型参数的值和边界等属性
chgTimeUnit 改变动态系统的时间单位
d2d 重新采样离散时间模型
d2c 将模型从离散时间转换为连续时间
汇集 将模型从连续时间转换为离散时间
合并 合并估计模型

全部展开

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

全部展开

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

全部展开

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

例子

全部折叠

指定一个具有可估计参数的连续时间单输入单输出(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”。现状:由直接构建或改造而产生。不估计。

G是一个idtf模型。全国矿工工会而且指定分子和分母多项式系数的降幂初值 年代 .初值为1和4的分子系数是可估计的参数。初值为20和5的分母系数也是可估计的参数。前面的分母系数总是固定为1。

你可以使用G指定用于估计的初始参数化特遣部队

指定一个已知输入延迟的连续时间SISO传递函数。传递函数的初值由下式给出:

G 年代 e - 5 8 年代 5 年代 + 5

用名称标记传递函数的输入“电压”并将输入单位指定为伏特

使用名称-值对参数指定延迟、输入名称和输入单元。

Num = 5;Den = [1 5];Input_delay = 5.8;input_name =“电压”;input_unit =“伏”;G = idtf(num,den,“InputDelay”input_delay,...“InputName”input_name,“InputUnit”, input_unit);

G 是一个idtf模型。你可以使用G指定用于估计的初始参数化特遣部队.如果您这样做,将建模属性,如InputDelayInputName,InputUnit应用于估计模型。估计过程处理InputDelay作为一个固定值。如果要估计延迟并指定5.8秒的初始值,请使用IODelay财产。

指定具有可估计参数的离散SISO传递函数。传递函数的初值由下式给出:

H z z - 0 1 z + 0 8

指定采样时间为0.2秒。

Num = [1 -0.1];Den = [1 0.8];Ts = 0.2;H = idtf(num,den,Ts);

全国矿工工会而且是分子和分母多项式系数的初值。对于离散时间系统,指定的升幂系数 z - 1

Ts将传递函数的采样时间指定为0.2秒。

H是一个idtf模型。分子和分母系数是可估计的参数(除了主要分母系数,它固定为1)。

指定一个离散时间,双输入,双输出传递函数。MIMO传递函数的初始值由下式给出:

H z 1 z + 0 2 z z + 0 7 - z + 2 z - 0 3. 3. z + 0 3.

指定采样时间为0.2秒。

Nums = {1,[1,0];[-1,2],3};Dens = {[1,0.2],[1,0.7];[1,-0.3],[1,0.3]};Ts = 0.2;H = idtf(nums,dens,Ts);

全国矿工工会而且洞穴指定单元格数组中系数的初始值。单元格数组中的每个条目都对应于一个输入-输出对的传递函数的分子或分母。例如,第一行全国矿工工会(1,0) {1,}.这个单元格数组指定了中第一行传递函数的分子H.同样,第一行洞穴{[0.2], [0.7]},指定第一行的分母H

Ts将传递函数的采样时间指定为0.2秒。

H是一个idtf模型。除了每个分母多项式的领先系数外,所有的多项式系数都是可估计的参数。这些系数总是固定为1。

指定下列离散时间传递函数为问^ 1

H - 1 1 + 0 4 - 1 1 + 0 1 - 1 - 0 3. - 2

指定采样时间为0.1秒。

Num = [1 0.4];Den = [1 0.1 -0.3];Ts = 0.1;convention_variable =“问^ 1”;H = idtf(num,den,Ts,“变量”, convention_variable);

使用名称-值对参数指定变量问^ 1

全国矿工工会而且分子和分母的多项式系数是的升幂吗 - 1

Ts将传递函数的采样时间指定为0.1秒。

H是一个idtf模型。

指定一个具有可估计系数的传递函数,其初始值由以下静态增益矩阵给出:

H 年代 1 0 1 1 1 0 3. 0 2

M = [1 0 1;11 10;3 0 2];H = idtf(M);

H是一个idtf模型,该模型描述了三个输入(Nu = 3),三个输出(Ny = 3)传递函数。每个输入输出通道都是一个可估计的静态增益。增益的初始值由矩阵中的值给出

将具有可识别参数的状态空间模型转换为具有可识别参数的传递函数。

将以下可识别的状态空间模型转换为可识别的传递函数。

x t - 0 2 0 0 - 0 3. x t + - 2 4 u t + 0 1 0 2 e t y t 1 1 x t

A = [-0.2, 0;0, -0.3);B = [2;4];C = [1,1];D = 0;K = [0.1;0.2);sys0 = idss(A,B,C,D,K,“NoiseVariance”, 0.1);Sys = idtf(sys0);

一个BCD,K都是矩阵sys0为噪声方差为0.1的可识别状态空间模型。

Sys = idtf(sys0)创建一个idtf模型sys

在时间表中加载时域系统响应数据tt1

负载sdata1.mattt1

设置杆子的数目np2估计一个传递函数。

Np = 2;Sys = tfest(tt1,np);

sys是一个idtf包含估计的两极传递函数的模型。

查看结果估计模型的分子和分母系数sys

sys。ν米erator
ans =1×22.4554 - 176.9856
sys。Denominator
ans =1×31.0000 3.1625 23.1631

要查看分子、分母和其他信息估计中的不确定性,请使用tfdata

创建具有可识别系数的传递函数模型数组。数组中的每个传递函数的形式为:

H 年代 一个 年代 + 一个

系数的初值 一个 在整个数组中变化,从0.1到1.0,增量为0.1。

H = idtf(0 (1,1,10));K = 1:10 num = K /10;Den = [1 k/10];H(:,:,k) = idtf(num,den);结束

第一个命令预先分配一个一维的10个元素数组,H,然后用空填满idtf模型。

模型数组的前两个维是输出维和输入维。剩下的维度是数组维度。H (:,:, k)代表了 k t h 在数组中建模。因此,循环替换 k t h 数组中具有传递函数的项,其系数初始化为 一个 k / 1 0

版本历史

在R2012a中引入