线性逼近金宝app模型或子系统
打开Simulin金宝appk模型。
mdl =“watertank”;open_system(MDL)
在PID控制器模块的输出处指定一个线性化输入,即水箱系统模块的输入信号。
io (1) = linio (“watertank / PID控制器”, 1“输入”);
在指定的水箱系统块的输出线性化输出点。指定输出点开环移除所述线性反馈信号的影响,而不改变模型的工作点。
io (2) = linio (“watertank /水箱系统”, 1“openoutput”);
使用指定的I / O集线性化模型。
linsys =线性化(mdl, io);
linsys
为模型工作点处被试的线性近似。
打开Simulin金宝appk模型。
mdl =“magball”;open_system(MDL)
求球高度的稳态工作点0.05
.创建默认工作点规范,并将高度状态设置为已知值。
opspec = operspec (mdl);opspec.States(5)。= 1;opspec.States(5)。x = 0.05;
修剪模型以找到工作点。
选择= findopOptions (“DisplayReport”,'离开');op = condop(mdl,opspec,选项);
指定线性化输入和输出信号,以计算闭环传递函数。
io (1) = linio ('magball /期望的高度', 1“输入”);io (2) = linio (“magball /磁球工厂”, 1'输出');
使用指定的I/O集在指定的工作点对模型进行线性化。
Linsys =线性化(MDL,IO,OP);
打开Simulin金宝appk模型。
mdl =“watertank”;open_system(MDL)
为了计算闭环传递函数,首先指定线性化输入和输出信号。
io (1) = linio (“watertank / PID控制器”, 1“输入”);io (2) = linio (“watertank /水箱系统”, 1'输出');
模拟sys
为了10.
秒并线性化模型。
linsys =线性化(mdl io 10);
打开Simulin金宝appk模型。
mdl =“scdcascade”;open_system(MDL)
为外环控制器增益指定参数变化,Kp1
和Ki1
.为每个增益值创建参数网格。
Kp1_range = linspace (Kp1 Kp1 * 0.8 * 1.2, 6);Ki1_range = linspace (Ki1 Ki1 * 0.8 * 1.2, 4);[Kp1_grid, Ki1_grid] = ndgrid (Kp1_range Ki1_range);
创建带有字段的参数值结构的名字
和价值
.
参数(1)。Name ='的Kp1';参数(1)。价值= Kp1_grid; params(2).Name =“Ki1”;Params(2).value = ki1_grid;
PARAMS
是一个6乘4的参数值网格,其中每个网格点对应一个唯一的组合Kp1
和Ki1
值。
定义线性输入和输出点用于计算系统的闭环响应。
io (1) = linio (“scdcascade /选点”, 1“输入”);io (2) = linio (“scdcascade /总和”, 1'输出');
在模型工作点使用指定的参数值对模型进行线性化。
linsys =线性化(mdl io, params);
打开Simulin金宝appk模型。
mdl =“scdpwm”;open_system(MDL)
从模型中提取线性化输入和输出。
io = getlinio (mdl);
在模型工作点线性化模型。
Linsys =线性化(MDL,IO)
linsys = D = Step Plant Model 0静态增益
电压到PWM块的不连续导致模型线性化为零。若要在线性化期间将此块作为单位增益处理,请指定该块的替代线性化。
blocksub.name =“scdpwm /电压PWM”;blocksub.Value = 1;
使用指定的块替换将模型线性化。
linsys =线性化(mdl blocksub io)
linsys = A = State Space(State Space) (State Space(0.9999 -0.0001 State Space(0.0001 1 State Space)) 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秒
打开Simulin金宝appk模型。
mdl =“watertank”;open_system(MDL)
要将水箱系统模块线性化,请指定线性化输入和输出。
io (1) = linio (“watertank / PID控制器”, 1“输入”);io (2) = linio (“watertank /水箱系统”, 1“openoutput”);
创建一个线性化选项集,并指定线性化模型的采样时间。
选择= linearizeOptions (“SampleTime”,0.1);
使用指定的选项线性化工厂。
linsys =线性化(mdl、io、期权)
linsys = A = H H 0.995 B = PID控制研究ħ0.02494 C = h进水罐S1中d = PID控制研究水储罐秒0采样时间:0.1秒离散时间状态空间模型。
线性化的对象是采样时间为的离散状态空间模型0.1
.
打开Simulin金宝appk模型。
mdl =“watertank”;open_system(MDL)
指定要线性化的块的完整块路径。
blockpath =“watertank /水箱系统”;
在模型操作点处线性化指定的块。
linsys =线性化(MDL,blockpath);
打开仿真软金宝app件模型。
mdl =“magball”;open_system(MDL)
求球高度的稳态工作点0.05
.创建默认工作点规范,并将高度状态设置为已知值。
opspec = operspec (mdl);opspec.States(5)。= 1;opspec.States(5)。x = 0.05;
选择= findopOptions (“DisplayReport”,'离开');op = condop(mdl,opspec,选项);
指定要线性化的块的块路径。
blockpath =“magball /磁球工厂”;
在指定的操作点处线性化指定的块。
linsys =线性化(mdl blockpath, op);
打开Simulin金宝appk模型。
mdl =“magball”;open_system(MDL)
线性化的模型工作点的工厂。
blockpath =“magball /磁球工厂”;linsys =线性化(MDL,blockpath);
查看线性化工厂的默认状态顺序。
linsys.StateName
ans = 3x1 cell array {'height'} {'Current'} {'dhdt'}
线性化植物并在线化模型中重新排序状态。将高度的变化率作为第二状态设置。
stateorder = {“magball /磁球工厂/高度”;...' magball /磁球工厂/ dhdt ';...“magball /磁球工厂/电流”};linsys =线性化(mdl blockpath,'陈辞', stateorder);
查看新的状态命令。
linsys.StateName
ans = 3x1 cell array {'height'} {'dhdt'} {'Current'}
打开Simulin金宝appk模型。
mdl =“watertank”;open_system(MDL)
为了计算闭环传递函数,首先指定线性化输入和输出信号。
io (1) = linio (“watertank / PID控制器”, 1“输入”);io (2) = linio (“watertank /水箱系统”, 1'输出');
模拟sys
将模型线性化0
和10.
秒。返回对应于这些快照时的操作点;也就是说,模型线性化的操作点。
[linsys, linop] =线性化(mdl io, [0, 10]);
打开Simulin金宝appk模型。
mdl =“watertank”;open_system(MDL)
变化的参数一个
和b
在其标称值的10%以内。
[A_grid, b_grid] = ndgrid (linspace (0.9 * 1.1 * 3),...linspace (0.9 * b, b 1.1 * 4));
创建一个参数结构数组,为每个参数指定名称和网格点。
参数(1)。Name =“一个”;参数(1)。价值= A_grid; params(2).Name =“b”;参数(2)。价值= b_grid;
为模型创建一个默认的操作点规范。
opspec = operspec (mdl);
使用指定的操作点规范、参数网格对模型进行修剪。抑制操作点搜索报表的显示。
选择= findopOptions (“DisplayReport”,'离开');[OP,opreport] = findop(MDL,opspec,则params,优化);
op.
是一个3乘4的工作点对象数组,对应于指定的参数网格点。
为植物模型指定块路径。
blockpath =“watertank /期望的水位”;
要在线性化期间存储偏移,请创建一个线性化选项设置和设置StoreOffsets
来真的
.
选择= linearizeOptions (“StoreOffsets”,真正的);
批量使用指定的I / O点和参数变体在修剪操作点处线性化。
[Linsys,Linop,Info] =线性化(MDL,BlockPath,OP,Params,选项);
你可以使用在信息。偏移量
当配置LPV System块时。
信息。偏移量
ans = 3x4 struct array with fields
MDL
- - - - - -金宝app仿真软件模型名称金宝appSimulink模型的名称,指定为矢量字符或字符串。该模型必须是在当前工作文件夹或MATLAB的路径。
IO.
- - - - - -分析点集包含输入、输出和开口的分析点集,指定为线性化I/O对象或线性化I/O对象的向量。创建IO.
:
每个线性化I/O对象IO.
必须对应于Simulink模型金宝appMDL
或者模型层次结构中的一些普通模式模型引用。
如果您省略IO.
, 然后线性化
使用模型的根级导入和输出作为分析点。
有关指定线性化输入,输出和开口的详细信息,请参阅指定要线性化的模型部分.
op.
- - - - - -操作点线性化的工作点,指定为下列之一:
操作点对象,使用:
操作点对象数组,指定多个操作点。要创建一系列操作点对象,可以:
使用多个快照时提取操作点findop
.
批量修剪您的模型使用多个操作点规格。有关更多信息,请参见批量计算多个规格的稳态工作点.
批量修剪您的模型使用参数变化。有关更多信息,请参见批量计算参数变化的稳态工作点.
正标量的矢量代表一个或多个模拟快照倍。该软件模拟sys
并在指定的快照时间将模型线性化。
如果您还指定了使用的参数变化参数
,软件为每个快照时间和参数网格点组合模拟模型。该操作可以计算得昂贵。
如果使用参数
,以及参数:
影响模型的工作点,然后指定op.
作为运行点的具有相同尺寸作为参数值的网格阵列。为了获得工作点相对应的参数值组合,批量使用修剪模型参数
在线性化。有关更多信息,请参见从参数变体导出的多个操作点的批次线性化模型.
不影响模型的工作点,然后指定op.
作为一个操作点。
blockpath
- - - - - -块或子系统块或子系统来线性化,指定为包含其完整块路径的字符向量或字符串。
该软件将指定块的输入和输出作为开环输入和输出,在线性化之前将块与模型的其余部分隔离。
blocksub
- - - - - -用线性化代替块和子系统代替线性化的块和子系统,指定为一个结构或n×1结构阵列,其中n是要指定线性化的块的数量。使用blocksub
指定块或子系统的自定义的线性化。例如,您可以指定不具备分析线性化,如用不连续或触发子系统块块线性化。
要研究改变一个块的线性化对模型动力学的影响,您可以通过为一个块指定多个替代线性化来批量线性化您的模型。
每个替代线性化结构具有以下字段:
的名字
- 块路径要指定线性化的块的块路径,指定为字符向量或字符串。
价值
- 替代线性化将block替换为线性化,指定为以下方式之一:
双 - 指定SISO块作为增益线性化。
双精度数组-指定MIMO块的线性化nu——- - - - - -ny增益值数组,在哪里nu输入和的数量是多少ny为输出数。
指定模型的I/O配置必须与指定的块的配置相匹配的名字
.使用不确定模型需要鲁棒控制工具箱™软件。
LTI模型,不确定的状态空间模型,或不确定真正的对象数组 - 批量使用多块替代线性模型。O配置中的阵列中的每个模型必须要为其指定自定义的线性化块的配置相匹配的I /。如果你:
具有以下字段的结构:
场地 | 描述 |
---|---|
规格 |
块线性化,指定为字符向量,包含以下之一:
指定的表达式或函数必须返回以下中的一个:
所返回模型的I/O配置必须与指定的块的配置匹配 |
类型 |
规格类型,指定为以下类型之一:
|
parameternames. |
线性化函数参数名称,指定为字符向量的单元格数组。指定 您还必须指定相应的 |
ParameterValues |
线性化函数参数值,指定为双打的向量。参数值的顺序必须对应于参数名称的顺序 |
参数
- - - - - -参数样本用于线性化的参数样本,指定为以下之一:
结构 - 改变一个参数的值,通过指定参数
作为一个具有以下字段的结构:
的名字
- 参数名称,指定为字符向量或字符串。您可以指定在模型工作区的变量,MATLAB的工作空间,或数据字典中的任何模型参数。如果由模型中使用的变量不是标量变量,指定参数名作为表达解析为一个数字标量值。例如,使用矢量的第一元素V
作为参数,使用:
param.Name =“V(1)”;
价值
—参数样本值,指定为双数组。
例如,改变参数的值一个
在10%的范围:
param.Name =“一个”;参数。价值= linspace(0.9*A,1.1*A,3);
结构数组-改变多个参数的值。例如,改变参数的值一个
和b
在10%的范围:
[A_grid, b_grid] = ndgrid (linspace (0.9 * 1.1 * 3),...linspace (0.9 * b, b 1.1 * 3));参数(1)。Name =“一个”;参数(1)。价值= A_grid; params(2).Name =“b”;参数(2)。价值= b_grid;
有关更多信息,请参见为批量线性化指定参数样本.
如果参数
仅指定可调参数,软件批处理使用单个模型编译将模型线性化。
为了计算由所需的偏移LPV系统块,指定参数
,并设置options.StoreOffsets
来真的
.然后可以返回额外的线性化信息信息
,并使用偏移来提取getoffsetsforlpv.
.
选项
- - - - - -线性化算法的选择linearizeOptions
选项集线性化算法选项,指定为linearizeOptions
选项集。
linsys
——线性化的结果线性化结果,作为状态空间模型或状态空间模型数组返回。的尺寸linsys
取决于指定的参数变化和块替换,以及将模型线性化的操作点。
参数变化 | 区块取代 | 线性化在… | 由此产生linsys 方面 |
---|---|---|---|
没有参数变化 | 没有块替换 | 模型操作点 | 状态空间模型单 |
单个操作点,指定为操作点对象或使用快照时间op. |
|||
N1——- - - - - -... ——- - - - - -N米由指定的操作点对象数组op. |
N1——- - - - - -... ——- - - - - -N米 |
||
N年代快照,指定为使用快照时间的向量op. |
长度列向量N年代 | ||
N1——- - - - - -... ——- - - - - -N米模型数组的至少一个块,由blocksub.Value |
模型操作点 | N1——- - - - - -... ——- - - - - -N米 |
|
单个操作点,指定为操作点对象或使用快照时间op. |
|||
N1——- - - - - -... ——- - - - - -N米操作点数组,指定为操作点对象数组op. |
|||
N年代快照,指定为使用快照时间的向量op. |
N年代——- - - - - -N1——- - - - - -... ——- - - - - -N米 |
||
N1——- - - - - -... ——- - - - - -N米参数网格,由参数 |
要么没有块替换,要么N1——- - - - - -... ——- - - - - -N米模型数组的至少一个块,由blocksub.Value |
模型操作点 | N1——- - - - - -... ——- - - - - -N米 |
单个操作点,指定为操作点对象或使用快照时间op. |
|||
N1——- - - - - -... ——- - - - - -N米由指定的操作点对象数组op. |
|||
N年代快照,指定为使用快照时间的向量op. |
N年代——- - - - - -N1——- - - - - -... ——- - - - - -N米 |
例如,假设:
op.
是操作点对象的4乘3数组,且不指定参数变化或块替换。在这种情况下,linsys
是一个4×3模型排列。
op.
是单操作点对象和参数
指定一个3 × 4 × 2的参数网格。在这种情况下,linsys
是一个3 × 4 × 2的模型阵列。
op.
一个正标量的行向量有两个元素你没有指定吗参数
.在这种情况下,linsys
是一个有两个元素的列向量。
op.
一个正标量的列向量有三个元素和吗参数
指定一个5乘6的参数网格。在这种情况下,linsys
是一个3×5×6模型排列。
op.
是一个操作点对象,您不指定参数变体,以及blocksub.Value
是模型中一个块的2 × 3模型数组。在这种情况下,linsys
是一个2乘3的模型数组。
op.
是具有四个元素的正标量的列向量,您不指定参数变体,以及blocksub.Value
是模型中一个块的1 × 2模型数组。在这种情况下,linsys
是一个4乘1乘2的模型数组。
有关模型阵列的更多信息,请参阅模型阵列.
信息
- 线性化信息线性化信息,作为带有以下字段的结构返回:
偏移量
- 线性补偿[]
(默认)| structure | structure array对应于模型线性化的操作点的线性化偏移,返回为[]
如果options.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 .对于连续时间系统,Ts 是0 . |
如果偏移量
是一个结构阵列,则可以配置一个LPV系统使用偏移量阻塞。要做到这一点,首先使用getoffsetsforlpv.
.例如,请参见使用LTI系统数组近似非线性行为.
顾问
—线性化诊断信息[]
(默认)|LinearizationAdvisor
对象|数组LinearizationAdvisor
对象线性化的诊断信息,返回[]
如果选项。StoreAdvisor
是错误的
.否则,顾问
以下列方式之一返回:
如果linsys
是一个单一状态空间模型,顾问
是一个LinearizationAdvisor
对象。
如果linsys
是状态空间模型的数组,顾问
是阵列LinearizationAdvisor
与相同尺寸的对象linsys
.
LinearizationAdvisor
对象存储单个线性化块的线性化诊断信息。有关使用a故障排除线性化结果的示例LinearizationAdvisor
对象,看到故障排除在命令行线性化结果.
您可以在MATLAB路径上使用自定义函数指定Simulink模型中的块或子系统的替代线性化。金宝app
你的自定义线性化函数必须有一个BlockData
输入参数,它是软件创建并传递给函数的结构。BlockData
有以下字段:
场地 | 描述 | ||||||||
---|---|---|---|---|---|---|---|---|---|
blockname. |
要为其指定自定义线性化的块的名称。 | ||||||||
参数 |
块参数值,指定为结构数组的名字 和价值 字段。参数 属性中指定的参数的名称和值blocksub.Value.ParameterNames 和blocksub.Value.ParameterValues 字段。 |
||||||||
输入 |
要为其定义线性化的块的输入信号,指定为每个块输入具有一个结构的结构数组。每一个结构
|
||||||||
纽约 |
块线性化的输出通道数。 | ||||||||
nu. |
块线性化的输入通道数。 | ||||||||
BlockLinearization |
块的当前默认线性化,指定为状态空间模型。您可以指定一个依赖于默认线性化的块线性化BlockLinearization . |
您的自定义函数必须返回带有的模型nu.
输入和纽约
输出。该模型必须是下列模型之一:
线性模型以D矩阵的形式
控制系统工具箱LTI模型对象
不确定状态空间模型或不确定实物(需要鲁棒控制工具箱软件)
例如,下面的函数将当前默认的块线性化乘以Td = 0.5
秒。延迟由带有采样时间的Thiran滤波器表示t = 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”,'ts'};blocksub.Value.ParameterValues = [0.5 0.1]。
默认情况下,线性化
自动设置以下Simulink模型属性:金宝app
BufferReuse = '了'
RTWInlineParameters = ' '
BlockReductionOpt = '了'
SaveFormat = ' StructureWithTime '
线性化后,Simulink恢复了原始模型属金宝app性。
金宝appSimulink Control Design™软件使用一个块一个块的方法来线性化模型。该软件将Simulink模型中的每个块单独线性化,并通过组合单个块的线性化来产生整个系统的线性化。金宝app
该软件从操作点确定每个块的输入和状态级别,并获得这些级别上每个块的雅可比矩阵。
对于某些块,软件不能以这种方式计算解析线性化。例如:
一些非线性没有定义雅可比矩阵。
一些离散的块,如状态图和触发子系统,倾向于线性化为零。
有些块不实现雅可比矩阵。
自定义块,例如功能块和Matlab功能块,没有分析雅加索人。
您可以为您知道预期的线性任何这样的块指定自定义的线性化。如果不指定自定义的线性化,该软件通过扰乱块输入和状态,并测量到这些扰动的响应线性化模型。对于每一个输入和状态,默认的扰动水平是:
对于双精度值。
为单精度值。
在这里,x为操作点对应的输入或状态的值。有关如何更改单个块的扰动级别的信息,请参见在线性化过程中改变被摄块的摄动水平.
您可以使用全型号数字扰动来线性化系统,其中软件通过扰乱根级输入和状态的值来计算完整模型的线性化。为此,创建一个linearizeOptions
对象,并设置LinearizationAlgorithm
属性为以下内容之一:
'numericalpert'
- 使用前向差异扰乱输入和状态;也就是说,通过向输入和状态值添加扰动。这种扰动方法通常比“numericalpert2”
方法。
“numericalpert2”
- 使用中央差异扰乱输入和状态;也就是说,通过扰乱正面和负方向的输入和状态值。这种扰动方法通常比该方法更准确'numericalpert'
方法。
对于每个输入和状态,软件对模型进行摄动,并根据模型对这些摄动的响应计算一个线性模型。属性可以配置状态和输入扰动级别NumericalPertRel
线性化的选择。
逐块线性化与全型数字扰动有几个优点:
大多数Si金宝appmulink块具有预编程的线性化,可提供块的精确线性化。
您可以使用线性分析点来指定要线性化的模型的一部分。
您可以配置块来使用自定义线性化,而不影响您的模型模拟。
在结构上删除了结构上的非生物状态。
您可以指定包含不确定性的线性化(需要鲁棒控制工具箱软件)。
可以获取详细的诊断信息。
线性化多速率模型时,可以使用不同的速率转换方法。全型数值扰动只能使用零阶保持速率转换。
作为替代品线性化
功能,您可以使用以下方法之一线性化模型:
要交互式线性化模型,使用线性化模型应用程序。例如,请参见模型操作点的线性化S金宝appimulink模型.
要在不修改模型或为每个传递函数创建分析点集的情况下获得多个传递函数,请使用slLinearizer
接口。例如,请参见改变参数值,并获得多个传递函数.
虽然两金宝appSimulink控制设计软件和Simulink金宝applinmod
函数执行逐块线性化,金宝appSimulink控制设计线性化功能具有更灵活的用户界面和使用控制系统工具箱数值算法。有关更多信息,请参见使用Simulink控制设计与Simul金宝appink的线性化.
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。