文档

InitializeConditions

初始化这个MATLAB s函数的状态向量

要求

没有

语言

MATLAB

语法

InitializeConditions (s)

参数

年代

的实例万博1manbetx仿真软件。MSFcnRunTimeBlock类表示MATLAB二级s函数块。

描述

的仿真软万博1manbetx件®Engine在模拟开始时调用此可选方法。它应该初始化这个s -函数块的连续和离散状态(如果有的话)。在一个二级MATLAB s函数中,使用ContStatesDwork运行时对象方法来访问连续和离散状态。这个方法还可以执行这个s -函数需要的任何其他初始化活动。

请注意

如果你有万博1manbetx仿真软件编码器™的初始化代码,您需要确保InitializeConditions函数只运行一次,然后将此初始化代码移动到开始方法。MathWorks建议将此代码更改作为最佳实践。

如果这个s函数驻留在已启用的、配置为重置状态的子系统中,那么当已启用的子系统重新启动执行时,Simulink引擎也会调用这个方法。万博1manbetx

Simu万博1manbetxlink引擎调用InitializeConditions在计算s函数的输入信号之前。因此,由于输入信号值还不可用,InitializeConditions不应使用输入信号的值来设置初始条件。如果s函数需要使用块的输入信号初始化内部值,请执行输出

例如,在C MEX s -函数中,使用mdlInitializeSizes方法。

ssSetNumIWork (S, 1);

IWork向量持有一个标志,指示是否已经指定了初始值。属性中初始化标志的值mdlInitializeCondition方法。

static void mdlinitializeconconditions (SimStruct *S) {/* mdlinitializeconconditions方法被调用时,模拟启动和每次启用的子系统被重新启用。当需要重新初始化值时,将IWork标志重置为1。*/ ssSetIWorkValue(S, 0,1);}

中IWork矢量标志的值mdlOutputs方法,以确定是否需要设置初始值。由于引擎已经在模拟的这一点上计算了输入值,因此mdlOutputs方法可以使用它们初始化内部值。

static void mdlOutputs(SimStruct *S, int_T tid){//如果IWork vector标志为true,则初始化值。// if (ssGetIWorkValue(S, 0) == 1){//在这里输入初始化代码//}// mdlOutputs函数的余数//}

对于2级MATLAB s函数,在前面的示例中使用DWork向量而不是IWork向量。

例子

本例将连续和离散状态初始化为1.0。MATLAB二级s函数将离散状态存储在DWork向量中。

函数初始化条件(s) s. contstates . data (1) = 1;s.Dwork(1)。Data = 1;% endfunction

介绍了R2012b

这个话题有用吗?