主要内容

getStateIndex.

获取操作点规范或操作点的状态元素的索引

描述

操作点规范的属性是一个数组,其中包含每个模型状态的修剪规范。在定义Simulink的自定义修剪的映射函数时万博1manbetx®模型,getStateIndex.允许您根据相应的块路径或状态名获取状态规范的索引。

当使用基于优化的搜索来调整S万博1manbetximulink模型时,一些应用程序在定义优化搜索参数时需要额外的灵活性。对于这样的系统,您可以指定自定义约束和自定义目标函数。对于复杂的模型,您可以定义一个映射,该映射选择模型状态、输入和输出的子集,以传递给自定义约束和目标函数。有关更多信息,请参见使用自定义约束和目标函数计算操作点

例子

指数= getStateIndex (op.,的名字)返回对应的状态规范的索引的名字在里面工作点规格特性op.

例子

指数= getStateIndex (op.,的名字,元素)返回指定对象的索引元素在具有多个状态的块的状态规范中。

例子

全部收缩

打开Sim万博1manbetxulink模型。

mdl ='scdindex1';Open_System(MDL)

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

opspec = operspec(mdl);

opspec包含模型的状态规范数组。

opspec.states.
(1.) scdindex1/system2 spec: dx = 0, initial guess: 0 spec: dx = 0, initial guess: 0 spec: dx = 0, initial guess: 0 (2.) scdindex1/system2 spec: dx = 0, initial guess: 0

获取与System2块对应的状态规范的索引。

index2 = getStateIndex (opspec,'scdindex1 / system2')
index = 2

索引2(1)system2的状态规范对象的索引在吗opspec.states.。因为这个块只有一个状态,index2有单行和INDEX2(2)1

如果块具有多个状态,则可以在相应的状态规范中获取所有状态的索引。

index1 = getStateIndex(OPSPEC,'scdindex1 / system1')
index = 1 1 1 2 1 3

每一排index1包含system2块中一个状态的索引。对于每一行,第一列包含状态规范的索引opspec.states.。第二列包含规范中每个状态元素的索引。

打开Sim万博1manbetxulink模型。

mdl ='scdindex1';Open_System(MDL)

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

opspec = operspec(mdl);

如果一个块有多个状态,您可以通过指定元素索引来获得相应状态规范中特定状态的索引。例如,获取system1块规范中第二个状态的索引。

index1 = getStateIndex(OPSPEC,'scdindex1 / system1'2)
index = 1 2

您还可以通过将元素索引指定为向量来获取块状态的子集的索引。例如,在系统1块的规范中获取第一和第三状态的指数。

index2 = getStateIndex (opspec,'scdindex1 / system1',[1 3])
index2 = 1 1 1 3

打开Sim万博1manbetxulink模型。

mdl ='scdindex2';Open_System(MDL)

System1块是一个具有三个名为状态的状态空间系统:位置,速度, 和加速度

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

opspec = operspec(mdl);

属性包含system1中每个命名状态的一个条目。

opspec.states.
(1.)位置规范:DX = 0,初始猜测:0(2.)速度规格:DX = 0,初始猜测:0(3)加速规范:DX = 0,初始猜测:0

要获得与块内命名状态相对应的状态规范的索引,请指定状态名。

index1 = getStateIndex(OPSPEC,“速度”)
index = 2

的第一列index1控件中相应状态规范的索引opspec.states.财产。第二列是1为一个命名的州。

开放模式。

mdl ='scdtanks_simscape';Open_System(MDL)

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

opspec = operspec(mdl);

操作点规范对象的属性包含模型中每个SIMCUSCE状态的一个状态规范。

要获得对应于Simscape状态的规范的索引,请指定状态名称。例如,获得Tank3的压力状态的索引。

idx = getStateIndex (opspec,'scdtanks_simscape.tank3.cpressure')
Idx = 18

的第一列idx中包含相应状态规范的索引opspec.states.。第二列是1Simscape状态。

查看规范opspec.states.这种状态。

opspec.States (idx (1))
(1) scdTanks_simscape.Tank3。压力规格:dx = 0,初始猜测:0

输入参数

全部收缩

用于Simulink模型的操作点规范或操作点,指定为一个万博1manbetxOperspec.物体或工作点物体。

块路径或状态名称对应于状态规范中的的属性op.,指定为包含以下其中一个的字符向量或字符串:

  • 包含未命名状态的Simulink模型中块的块路径。万博1manbetx

  • Simulink或Simscape™块中的命名状态的名万博1manbetx称。

要查看具有状态规范的所有状态,请查看的属性op.

op.States

状态元素索引,指定为小于或等于块或状态的正整数的正整数的名字或者这种整数的矢量。默认情况下,如果您未指定元素,getStateIndex.返回所选状态规范中所有元素的索引。例如,看到获得工作点规范指定状态要素索引

输出参数

全部收缩

时作为一个2元素行向量返回的状态索引元素是一个整数,或者是一个2列数组元素是矢量。每一排指数包含单个模型状态的索引。

的第一列指数控件中相应状态规范的索引的属性op.。第二列包含状态规范内的元素索引。

使用指数,您可以指定自定义映射的状态部分,以便对Simulink模型进行自定义调整。万博1manbetx有关更多信息,请参见CustomMappingFcn的属性Operspec.

介绍了R2017a