主要内容

线性化

的线性逼近动态仿真模块模型或子系统

描述

例子

linsys=线性化(mdlio返回非线性Simulink的线性近似®模型mdl在模型的操作点上使用文中指定的分析点io.如果你省略了io,然后线性化使用模型的根级导入和导出作为分析点。

例子

linsys=线性化(mdlio人事处使模型在工作点处线性化人事处

例子

linsys=线性化(mdlio参数中指定的参数值变化使模型线性化参数.您可以用模型工作区中的一个变量给出的值来改变任何模型参数®工作区或数据字典。

例子

linsys=线性化(mdlioblocksub中指定的替代块或子系统线性化模型blocksub

例子

linsys=线性化(mdlio选项使用附加的线性化选项对模型进行线性化。

linsys=线性化(mdlio人事处参数blocksub选项的任意组合将模型线性化人事处参数blocksub,选项以任何顺序。

例子

linsys=线性化(mdlblockpath返回模型中块或子系统的线性近似mdl,由blockpath,在模型作业点处。在线性化之前,软件将该块从模型的其余部分中分离出来。

例子

linsys=线性化(mdlblockpath人事处使块或子系统在工作点线性化人事处

linsys=线性化(mdlblockpath参数中指定的参数值变化将块或子系统线性化参数.您可以用模型工作区、MATLAB工作区或数据字典中的变量给出的值来改变任何模型参数。

linsys=线性化(mdlblockpathblocksub中指定的替代块或子系统线性化blocksub

linsys=线性化(mdlblockpath选项使用附加的线性化选项对块或子系统进行线性化。

linsys=线性化(mdlblockpath人事处参数blocksub选项的任意组合将块或子系统线性化人事处参数blocksub,选项以任何顺序。

例子

linsys=线性化(___“StateOrder”,stateorder指定任何前面语法的线性化模型中状态的顺序。

例子

linsyslinop线性化(___返回模型被线性化的操作点。在模拟快照进行线性化或在线性化过程中改变参数时使用此语法。

例子

linsyslinop信息线性化(___返回附加的线性化信息。选择要返回的线性化信息信息,在中启用相应选项选项

例子

全部折叠

打开Simulink模型。

mdl =“watertank”;open_system (mdl)

在PID控制器块的输出处指定一个线性化输入,它是水箱系统块的输入信号。

Io (1) = linio(“watertank / PID控制器”,1,“输入”);

在水箱系统块的输出处指定一个线性化输出点。指定输出点为开环,可以在不改变模型工作点的情况下消除反馈信号对线性化的影响。

Io (2) = linio(“watertank /水箱系统”,1,“openoutput”);

使用指定的I/O集将模型线性化。

Linsys =线性化(mdl,io);

linsys为该装置在模型工作点处的线性近似。

打开Simulink模型。

mdl =“magball”;open_system (mdl)

求出球高度的一个稳态工作点0.05.创建一个默认的操作点规范,并将高度状态设置为一个已知值。

Opspec = operspec(mdl);opspec.States(5)。已知= 1;opspec.States(5)。X = 0.05;

对模型进行修剪,找到操作点。

options = findopOptions(“DisplayReport”“关闭”);Op = findop(mdl,opspec,options);

指定线性化输入和输出信号,计算闭环传递函数。

Io (1) = linio(“magball /期望的高度”,1,“输入”);Io (2) = linio(“磁力球”,1,“输出”);

使用指定的I/O集在指定的操作点对模型进行线性化。

Linsys =线性化(mdl,io,op);

打开Simulink模型。

mdl =“watertank”;open_system (mdl)

为了计算闭环传递函数,首先指定线性化的输入和输出信号。

Io (1) = linio(“watertank / PID控制器”,1,“输入”);Io (2) = linio(“watertank /水箱系统”,1,“输出”);

模拟sys10秒和线性化模型。

Linsys =线性化(mdl,io,10);

打开Simulink模型。

mdl =“scdcascade”;open_system (mdl)

指定外环控制器增益的参数变化,Kp1而且Ki1.为每个增益值创建参数网格。

Kp1_range = linspace(Kp1*0.8,Kp1*1.2,6);Ki1_range = linspace(Ki1*0.8,Ki1*1.2,4);[Kp1_grid,Ki1_grid] = ndgrid(Kp1_range,Ki1_range);

创建带有字段的参数值结构的名字而且价值

参数(1)。Name =“Kp1”;参数(1)。价值= Kp1_grid; params(2).Name =“Ki1”;参数(2)。价值= Ki1_grid;

参数个数是一个6乘4的参数值网格,其中每个网格点对应于的唯一组合Kp1而且Ki1值。

定义线性化输入输出点,用于计算系统的闭环响应。

Io (1) = linio(“scdcascade /选点”,1,“输入”);Io (2) = linio(“scdcascade /总和”,1,“输出”);

使用指定的参数值使模型在模型操作点处线性化。

Linsys =线性化(mdl,io,params);

打开Simulink模型。

mdl =“scdpwm”;open_system (mdl)

从模型中提取线性化输入和输出。

IO = getlinio(mdl);

在模型工作点处使模型线性化。

Linsys =线性化(mdl,io)
linsys = D = Step Plant Model 0静态增益。

电压到PWM块中的不连续导致模型线性化为零。要在线性化过程中将此块视为单位增益,请为该块指定一个替代线性化。

blocksub。Name ='scdpwm/电压到PWM';blocksub。价值= 1;

使用指定的块替换使模型线性化。

Linsys =线性化(mdl,blocksub,io)
linsys = A = State Space(State Space(State Space(State Space) 0.9999 -0.0001 State Space(0.0001 1 B = Step State Space(0.0001 State Space(5e-09) C = State Space(State Space) State Space(Plant Model 01 D = Step Plant Model 0采样时间:0.0001秒离散时间状态空间模型。

打开Simulink模型。

mdl =“watertank”;open_system (mdl)

要将水箱系统块线性化,请指定线性化的输入和输出。

Io (1) = linio(“watertank / PID控制器”,1,“输入”);Io (2) = linio(“watertank /水箱系统”,1,“openoutput”);

创建一个线性化选项集,并为线性化模型指定采样时间。

options = linearizeOptions(“SampleTime”, 0.1);

使用指定的选项使工厂线性化。

Linsys =线性化(mdl,io,options)
linsys = A = H H 0.995 B = PID控制H 0.02494 C = H水箱S 1 D = PID控制水箱S 0采样时间:0.1秒离散时间状态空间模型。

线性化植物模型是一个离散时间状态空间模型,样本时间为0.1

打开Simulink模型。

mdl =“watertank”;open_system (mdl)

指定要线性化的块的完整块路径。

blockpath =“watertank /水箱系统”

在模型操作点将指定块线性化。

Linsys =线性化(mdl,blockpath);

打开Simulink模型。

mdl =“magball”;open_system (mdl)

求出球高度的一个稳态工作点0.05.创建一个默认的操作点规范,并将高度状态设置为一个已知值。

Opspec = operspec(mdl);opspec.States(5)。已知= 1;opspec.States(5)。X = 0.05;
options = findopOptions(“DisplayReport”“关闭”);Op = findop(mdl,opspec,options);

指定要线性化的块的块路径。

blockpath =“磁力球”

在指定的操作点将指定的块线性化。

Linsys =线性化(mdl,blockpath,op);

打开Simulink模型。

mdl =“magball”;open_system (mdl)

在模型工作点处使装置线性化。

blockpath =“磁力球”;Linsys =线性化(mdl,blockpath);

查看线性化设备的默认状态顺序。

linsys。StateName
ans = 3x1单元格数组{'height'} {'Current'} {'dhdt'}

对植物进行线性化,并对线性化模型中的状态进行重新排序。设高度变化率为第二状态。

Stateorder = {“磁球/磁球植物/高度”...magball/Magnetic Ball Plant/dhdt...磁球/磁球装置/电流};Linsys =线性化(mdl,blockpath,“StateOrder”, stateorder);

查看新的州秩序。

linsys。StateName
ans = 3x1单元格数组{'height'} {'dhdt'} {'Current'}

打开Simulink模型。

mdl =“watertank”;open_system (mdl)

为了计算闭环传递函数,首先指定线性化的输入和输出信号。

Io (1) = linio(“watertank / PID控制器”,1,“输入”);Io (2) = linio(“watertank /水箱系统”,1,“输出”);

模拟sys将模型线性化0而且10秒。返回与这些快照时间对应的操作点;也就是模型被线性化的操作点。

[linsys,linop] = linearize(mdl,io,[0,10]);

打开Simulink模型。

mdl =“watertank”;open_system (mdl)

不同的参数一个而且b在票面价值的10%以内。

[A_grid,b_grid] = ndgrid(linspace(0.9*A,1.1*A,3),...linspace (0.9 * b, b 1.1 * 4));

创建一个参数结构数组,为每个参数指定名称和网格点。

参数(1)。Name =“一个”;参数(1)。价值= A_grid; params(2).Name =“b”;参数(2)。价值= b_grid;

为模型创建一个默认的操作点规范。

Opspec = operspec(mdl);

修剪模型使用指定的操作点规格,参数网格。禁止显示操作点搜索报告。

opt = findopOptions(“DisplayReport”“关闭”);[op,opreport] = findop(mdl,opspec,params,opt);

人事处对应于指定参数网格点的操作点对象的3 × 4数组。

为工厂模型指定块路径。

blockpath =“水箱/预期水位”

要在线性化过程中存储偏移量,请创建线性化选项集和集StoreOffsets真正的

options = linearizeOptions(“StoreOffsets”,真正的);

使用指定的I/O点和参数变化,在裁剪的操作点分批线性化工厂。

[linsys,linop,info] =线性化(mdl,blockpath,op,params,options);

你可以在信息。偏移量当配置LPV系统块时。

信息。偏移量
ans = 3x4结构数组,字段:x dx u y StateName InputName OutputName Ts

输入参数

全部折叠

Simulink模型名,指定为字符向量或字符串。模型必须在当前工作文件夹或MATLAB路径中。

包含输入、输出和开口的分析点集,指定为线性化I/O对象或线性化I/O对象的向量。创建io

  • 定义输入、输出和开口linio

  • 如果在Simulink模型中指定了输入、输出和开口,则从使用的模型中提取这些点getlinio

中的每个线性化I/O对象io必须对应于Simulink模型mdl或者模型层次结构中的一些普通模式模型引用。

如果你省略了io,然后线性化使用模型的根级导入和导出作为分析点。

有关指定线性化输入、输出和开口的更多信息,请参见指定部分模型要线性化

线性化的工作点,指定为下列之一:

  • OperatingPoint对象,使用:

  • 的数组OperatingPoint对象,指定多个操作点。的数组OperatingPoint对象,你可以:

  • 表示一个或多个模拟快照时间的正标量向量。软件模拟sys并在指定的快照时间线性化模型。

    如果还使用指定参数变化参数,软件对每个快照时间和参数网格点组合进行模型仿真。此操作的计算成本可能很高。

如果使用参数,参数为:

  • 影响模型的操作点,然后指定人事处作为与参数值网格尺寸相同的操作点数组。要获得与参数值组合对应的操作点,可以使用批量修剪模型参数在线性化。有关更多信息,请参见由参数变化导出的多工作点批量线性化模型

  • 不影响模型操作点,那具体呢人事处作为单一操作点。

块或子系统要线性化,指定为包含其完整块路径的字符向量或字符串。

该软件将指定块的输入和输出视为开环输入和输出,在线性化之前将块与模型的其余部分隔离开来。

用线性化代替块和子系统,指定为结构或n-by-1结构数组n是要指定线性化的块的数量。使用blocksub指定块或子系统的自定义线性化。例如,您可以为没有分析线性化的块指定线性化,例如具有不连续或触发子系统的块。

要研究改变块的线性化对模型动力学的影响,您可以通过指定块的多个替代线性化来批量线性化模型。

如果您用不同于原始块或子系统的采样时间替换线性化,最好的做法是设置总体线性化采样时间(选项.SampleTime)改为非默认值。

每个替代线性化结构具有以下字段。

要为其指定线性化的块的块路径,指定为字符向量或字符串。

将块替换为线性化,指定为以下之一:

  • Double -指定一个SISO块的线性化增益。

  • 双精度数组——指定MIMO块的线性化nu——- - - - - -ny增益值数组,其中nu输入的数量和ny是输出的数量。

  • LTI模型、不确定状态空间模型或不确定真实对象—指定模型的I/O配置必须与指定的块的配置相匹配的名字.使用不确定模型需要鲁棒控制工具箱™软件。

  • LTI模型数组、不确定状态空间模型或不确定真实对象——使用多个块替换批量线性化模型。数组中每个模型的I/O配置必须与指定自定义线性化的块的配置相匹配。如果你:

    • 使用以下工具改变模型参数参数并指定价值作为一个模型数组,的尺寸价值必须匹配参数网格大小。

    • 指定人事处作为操作点和的数组价值作为一个模型数组,的尺寸价值必须匹配的尺寸人事处

    • 为多个块定义块替换,并指定价值作为一个或多个这些块的LTI模型的数组,数组的尺寸必须匹配。

  • 结构,使用以下字段。

    描述
    规范

    块线性化,指定为包含下列之一的字符向量:

    指定的表达式或函数必须返回以下其中之一:

    • 线性模型的形式为d矩阵

    • 控制系统工具箱LTI模型对象

    • 不确定状态空间模型或不确定真实对象(需要鲁棒控制工具箱软件)

    返回的模型的I/O配置必须与指定的块的配置相匹配的名字

    类型

    规格类型,指定为以下之一:

    • “表情”

    • “函数”

    ParameterNames

    线性化函数参数名,指定为字符向量的单元格数组。指定ParameterNames只有当Type = 'Function'块线性化函数需要输入参数。这些参数只影响指定块的线性化。

    您还必须指定相应的blocksub.Value.ParameterValues字段。

    ParameterValues

    线性化函数的参数值,指定为向量的双精度。参数值的顺序必须与中参数名称的顺序一致blocksub.Value.ParameterNames.指定ParameterValues只有当Type = 'Function'块线性化函数需要输入参数。

线性化的参数样本,指定为以下之一:

  • 结构——通过指定来改变单个参数的值参数作为具有以下字段的结构:

    • 的名字—参数名称,以字符向量或字符串形式指定。您可以指定模型工作区、MATLAB工作区或数据字典中的变量的任何模型参数。如果模型使用的变量不是标量变量,则将参数名称指定为解析为数值标量值的表达式。例如,要使用vector的第一个元素V作为参数,使用:

      参数。Name =“V(1)”
    • 价值-参数样本值,指定为双数组。

    例如,改变parameter的值一个在10%范围内:

    参数。Name =“一个”;参数。价值= linspace(0.9*A,1.1*A,3);
  • 结构数组-改变多个参数的值。例如,改变参数的值一个而且b在10%范围内:

    [A_grid,b_grid] = ndgrid(linspace(0.9*A,1.1*A,3),...linspace (0.9 * b, b 1.1 * 3));参数(1)。Name =“一个”;参数(1)。价值= A_grid; params(2).Name =“b”;参数(2)。价值= b_grid;

有关更多信息,请参见指定批量线性化的参数样本

如果参数只指定可调参数,软件批处理使用单一模型编译使模型线性化。

所需的偏移量LPV系统块,指定参数,并设置选项。StoreOffsets真正的.然后,您可以返回附加的线性化信息信息,并使用getOffsetsForLPV

线性化结果中的状态顺序,指定为块路径或状态名的单元格数组。中的块路径和状态的顺序stateorder中状态的顺序linsys

中的任何块都可以指定块路径mdl有状态的,或者任何指定的状态mdl

您不必指定每个块和状态mdlstateorder.您指定的状态首先出现在linsys,然后是其余状态的默认顺序。

线性化算法选项,指定为linearizeOptions选项设置。

输出参数

全部折叠

线性化结果,作为状态空间模型或状态空间模型数组返回。

对于大多数模型,linsys返回为党卫军对象或的数组党卫军对象。然而,如果mdl在定义的线性化路径中包含以下块之一io,然后linsys返回指定类型的状态空间模型。

linsys类型
块的替换指定为一族对象或可调模型对象 一族
块使用指定为不确定模型的替换,例如号航空母舰 号航空母舰(鲁棒控制工具箱)
稀疏二阶 mechss
描述符状态配置为线性化到稀疏模型的块 桅杆

的维度linsys取决于指定的参数变化和块替换,以及使模型线性化的操作点。

请注意

如果指定多个人事处参数,或blocksub。价值作为数组,那么它们的维度必须匹配。

参数变化 块替换 线性化在… 结果linsys
无参数变化 无块替换 模型操作点 单状态空间模型
单个操作点,指定为OperatingPoint对象或快照时间的使用人事处
N1——- - - - - -...——- - - - - -N的数组OperatingPoint对象,由人事处 N1——- - - - - -...——- - - - - -N
N年代快照,指定为使用的快照时间向量人事处 长度列向量N年代
N1——- - - - - -...——- - - - - -N为至少一个块创建模型数组,由blocksub。价值 模型操作点 N1——- - - - - -...——- - - - - -N
单个操作点,指定为OperatingPoint对象或快照时间的使用人事处
N1——- - - - - -...——- - - - - -N操作点的数组,指定为的数组OperatingPoint对象的使用人事处
N年代快照,指定为使用的快照时间向量人事处 N年代——- - - - - -N1——- - - - - -...——- - - - - -N
N1——- - - - - -...——- - - - - -N参数网格,由参数 要么没有块替换,要么N1——- - - - - -...——- - - - - -N为至少一个块创建模型数组,由blocksub。价值 模型操作点 N1——- - - - - -...——- - - - - -N
单个操作点,指定为OperatingPoint对象或快照时间的使用人事处
N1——- - - - - -...——- - - - - -N的数组OperatingPoint对象,由人事处
N年代快照,指定为使用的快照时间向量人事处 N年代——- - - - - -N1——- - - - - -...——- - - - - -N

例如,假设:

  • 人事处是4 × 3的数组吗OperatingPoint对象,并且不指定参数变化或块替换。在这种情况下,linsys是一个4乘3的模型数组。

  • 人事处是单身的OperatingPoint对象和参数指定3 × 4 × 2参数网格。在这种情况下,linsys是一个3乘4乘2的模型数组。

  • 人事处是带两个元素的正标量行向量吗参数.在这种情况下,linsys是具有两个元素的列向量。

  • 人事处一个含有三个元素的正标量的列向量和参数指定一个5乘6的参数网格。在这种情况下,linsys是一个3乘5乘6的模型数组。

  • 人事处是单个操作点对象,不指定参数变化,和blocksub。价值是模型中一个块的2乘3模型数组。在这种情况下,linsys是一个2乘3的模型数组。

  • 人事处是具有四个元素的正标量列向量,您不指定参数变化,并且blocksub。价值是模型中一个块的1 × 2模型数组。在这种情况下,linsys是一个4乘1乘2的模型数组。

有关模型数组的更多信息,请参见模型阵列

模型线性化的操作点,返回为OperatingPoint对象或的数组OperatingPoint尺寸相同的物体linsys.的每个元素linop操作点对应于哪个linsys得到模型。

如果你指定人事处作为单一操作点OperatingPoint对象或的数组OperatingPoint对象,那么linop是一份人事处.如果你指定人事处作为单个操作点对象,还指定参数的变化使用参数,然后linop与参数网格具有相同尺寸的数组。在这种情况下,元素linop的标量扩展副本吗人事处

要确定模型是否在合理的操作点处线性化,请查看中的状态和输入linop

线性化信息,作为具有以下字段的结构返回:

对应于模型被线性化的操作点的线性化偏移量,返回为[]如果选项。StoreOffsets.否则,偏移量返回值为以下之一:

  • 如果linsys那么是单一状态空间模型吗偏移量是一种结构。

  • 如果linsys是状态空间模型的数组吗偏移量一个结构数组是否具有相同的尺寸linsys

每个偏移结构都有以下字段:

描述
x 用于线性化的状态偏移量,作为长度的列向量返回nx,在那里nx州数在吗linsys
y 用于线性化的输出偏移量,作为长度的列向量返回ny,在那里ny输出的数量在吗linsys
u 用于线性化的输入偏移量,作为长度的列向量返回nu,在那里nu输入的数量是多少linsys
dx 连续时间系统的导数偏移量或离散时间系统的更新状态值,作为长度的列向量返回nx
StateName 状态名,作为单元格数组返回,其中包含nx中的名称匹配的元素linsys。StateName
InputName 输入名称,作为单元格数组返回nu中的名称匹配的元素linsys。InputName
OutputName 输出名称,作为单元格数组返回ny中的名称匹配的元素linsys。OutputName
Ts 线性化系统的采样时间,返回为与采样时间相匹配的标量linsys。Ts.对于连续时间系统,Ts0

如果偏移量是结构数组,可以配置LPV系统使用偏移量阻塞。为此,首先将它们转换为所需的格式getOffsetsForLPV.示例请参见LTI系统阵列的近似非线性行为

线性化诊断信息,返回为[]如果选项。StoreAdvisor.否则,顾问返回值为以下之一:

  • 如果linsys是一个单一状态空间模型,顾问是一个LinearizationAdvisor对象。

  • 如果linsys是一组状态空间模型,顾问的数组。LinearizationAdvisor尺寸相同的物体linsys

LinearizationAdvisor对象存储单个线性化块的线性化诊断信息。对于使用类进行线性化结果故障排除的示例LinearizationAdvisor对象,看到解决命令行中的线性化结果问题

更多关于

全部折叠

自定义线性化函数

您可以使用MATLAB路径上的自定义函数为Simulink模型中的块或子系统指定替代线性化。

你的自定义线性化函数必须有一个BlockData输入参数,这是软件创建并传递给函数的结构。BlockData具有以下字段:

描述
BlockName 要为其指定自定义线性化的块的名称。
参数 块参数值,指定为结构数组的名字而且价值字段。参数控件中指定的参数的名称和值blocksub.Value.ParameterNames而且blocksub.Value.ParameterValues字段。
输入

输入信号到要定义线性化的块,指定为一个结构数组,每个块输入都有一个结构。每个结构输入具有以下字段:

描述
BlockName 输出连接到相应块输入的块的全块路径。
PortIndex 指定的块的输出端口BlockName它连接到相应的块输入。
指定的信号的值BlockName而且PortIndex.如果这个信号是矢量信号,那么是具有相同维数的向量。
纽约 块线性化的输出通道数。
ν 块线性化的输入通道数。
BlockLinearization 块的当前默认线性化,指定为状态空间模型。可以指定块线性化,该块线性化依赖于默认的线性化BlockLinearization

您的自定义函数必须返回一个带有ν输入和纽约输出。该模型必须是以下类型之一:

  • 线性模型的形式为d矩阵

  • 控制系统工具箱LTI模型对象

  • 不确定状态空间模型或不确定真实对象(需要鲁棒控制工具箱软件)

例如,下面的函数将当前默认的块线性化乘以延迟Td = 0.5秒。时延用带采样时间的Thiran滤波器表示Ts = 0.1.延时和采样时间是存储在BlockData

函数sys = myCustomFunction(BlockData) Td = BlockData. parameters (1).Value;Ts = BlockData.Parameters(2).Value;sys = BlockData.BlockLinearization*Thiran(Td,Ts);结束

将此函数保存到MATLAB路径上的某个位置。

若要将此函数用作块或子系统的自定义线性化,请指定blocksub.Value.Specification而且blocksub.Value.Type字段。

blocksub.Value.Specification =“myCustomFunction”;blocksub.Value.Type =“函数”

若要设置延迟和采样时间参数值,请指定blocksub.Value.ParameterNames而且blocksub.Value.ParameterValues字段。

blocksub.Value.ParameterNames = {“Td”“t”};blocksub.Value.ParameterValues = [0.5 0.1];

算法

全部折叠

线性化的模型属性

默认情况下,线性化自动设置以下Simulink模型属性:

  • BufferReuse = 'off'

  • RTWInlineParameters = 'on'

  • BlockReductionOpt = 'off'

  • 保存格式= 'StructureWithTime'

线性化后,Simulink恢复原始模型属性。

一个线性化

Simulink控制设计™软件使用逐块的方法对模型进行线性化。该软件分别对Simulink模型中的每个块进行线性化,并通过结合各个块的线性化生成整个系统的线性化。

该软件从操作点确定每个块的输入和状态级别,并在这些级别上得到每个块的雅可比矩阵。

对于某些块,软件不能以这种方式计算分析线性化。例如:

  • 有些非线性没有定义的雅可比矩阵。

  • 一些离散的块,如状态图和触发子系统,趋向于线性化为零。

  • 有些块不实现雅可比矩阵。

  • 自定义块,例如功能块和MATLAB函数块,没有分析雅可比矩阵。

您可以为任何知道预期线性化的块指定自定义线性化。如果不指定自定义线性化,则软件通过扰动块输入和状态并测量对这些扰动的响应来对模型进行线性化。对于每个输入和状态,默认的扰动级别为:

  • 10 5 1 + | x | 对于双精度值。

  • 0.005 1 + | x | 对于单精度值。

在这里,x是操作点上对应的输入或状态的值。有关如何更改单个块的扰动级别的信息,请参见线性化过程中改变摄动块的摄动水平

有关更多信息,请参见线性化非线性模型而且精确线性化算法

全模型数值扰动

您可以使用全模型数值摄动将系统线性化,其中软件通过扰动根级输入和状态的值来计算全模型的线性化。为此,创建一个linearizeOptions对象,并设置LinearizationAlgorithm属性设置为以下之一:

  • “numericalpert”-使用正向差分扰动输入和状态;也就是说,通过在输入值和状态值上添加扰动。这种摄动法通常比“numericalpert2”方法。

  • “numericalpert2”-使用中心差异扰动输入和状态;也就是说,通过向正方向和负方向扰动输入值和状态值。这种摄动方法通常比“numericalpert”方法。

对于每个输入和状态,软件扰动模型,并根据模型对这些扰动的响应计算一个线性模型。方法可以配置状态和输入扰动级别NumericalPertRel线性化的选择。

与全模型数值扰动相比,逐块线性化有以下几个优点:

  • 大多数Simulink块都有预编程的线性化,提供块的精确线性化。

  • 您可以使用线性分析点来指定要线性化的模型的一部分。

  • 您可以配置块以使用自定义线性化而不影响您的模型模拟。

  • 结构上的非最小状态被自动删除。

  • 可以指定包含不确定性的线性化(需要鲁棒控制工具箱软件)。

  • 您可以查看详细的诊断信息。

  • 在对多速率模型进行线性化时,可以使用不同的速率转换方法。全模型数值扰动只能使用零阶保持率转换。

有关更多信息,请参见线性化非线性模型而且精确线性化算法

选择

作为一种替代线性化函数,您可以使用以下方法之一对模型进行线性化:

虽然两Simulink控制设计软件和Simulinklinmod函数执行逐块线性化,Simulink控制设计线性化功能具有更灵活的用户界面,并使用控制系统工具箱的数值算法。有关更多信息,请参见使用Simulink的线性化控制设计与Simulink的对比

版本历史

在R2006a中介绍

Baidu
map