mdlInitializeConditions
这个C墨西哥人的状态向量进行初始化功能
要求
没有
语言
C, c++
语法
#定义MDL_INITIALIZE_CONDITIONS空白mdlInitializeConditions (SimStruct *年代)
参数
-
年代
-
SimStruct代表一个功能块。
描述
的仿真软金宝app件®引擎开始时调用这个可选方法模拟。它应该初始化连续和离散状态,如果有的话,这个功能块。墨西哥人在C s函数,使用
和/或ssGetContStates
访问美国。这种方法还可以执行其他初始化这个功能需要的活动。ssGetDiscStates
请注意
如果你有金宝app仿真软件编码器™你需要确保的初始化代码mdlInitializeConditions
函数是只运行一次,然后移动到初始化代码mdlStart
方法。MathWorks建议这段代码改变作为一项最佳实践。
如果这功能驻留在一个子系统配置为启用复位状态,仿真软件引擎也使子系统重启执行时调用这个方法。金宝appC墨西哥人S-functions可以使用ssIsFirstInitCond
宏确定的时间mdlInitializeCondition叫做等于模拟开始时间。
请注意
如果你有金宝app仿真软件编码器墨西哥人,当生成代码noninlined C s函数,其中包含这个方法,确保该方法不是裹着#如果定义(MATLAB_MEX_FILE)
声明。例如:
#定义MDL_INITIALIZE_CONDITIONS #如果定义(MDL_INITIALIZE_CONDITIONS) & & (MATLAB_MEX_FILE)定义静态空mdlInitializeConditions (SimStruct * S){/ *添加mdlInitializeConditions代码* /}# endif
的定义
声明中使mdlInitializeConditions
方法只有一个MATLAB®墨西哥人文件。如果没有内联函数,金宝app仿真软件编码器产品不能使用这种方法,导致链接或运行时错误。
仿真软件金宝app引擎调用mdlInitializeConditions
之前计算功能的输入信号。因此,由于输入信号值尚未公布,mdlInitializeConditions
不应该使用输入信号值,设置初始条件。如果你的s函数需要初始化内部使用块的输入信号值,执行初始化mdlOutputs
。
例如,在一个C墨西哥人s函数,初始化一个IWork向量的一个元素mdlInitializeSizes
方法。
ssSetNumIWork (S, 1);
IWork向量有标志指示如果指定初始值。初始化标志的价值mdlInitializeCondition
方法。
静态孔隙mdlInitializeConditions (SimStruct * S) {/ * mdlInitializeConditions方法称为当仿真开始,每次重新启用一个子系统启用。重置IWork国旗1值需要被重新初始化。* / ssSetIWorkValue (0, 1);}
检查的IWork矢量标志的价值mdlOutputs
方法,来决定是否需要设置初始值。由于引擎计算模拟输入值在这一点上,mdlOutputs
方法可以使用它们来初始化内部值。
静态孔隙mdlOutputs (SimStruct *年代,int_T tid){/ /初始化值如果IWork矢量标志是正确的。/ /如果(ssGetIWorkValue(年代,0)= = 1){/ /在这里输入初始化代码/ /}/ /余mdlOutputs函数/ /}
一所二级MATLAB函数的使用DWork向量而不是IWork向量在前面的例子。
例子
这个例子中初始化一个连续和离散状态,至1.0。
#定义MDL_INITIALIZE_CONDITIONS / *变化# undef删除* / / *函数* / #如果定义(MDL_INITIALIZE_CONDITIONS)静态孔隙mdlInitializeConditions (SimStruct * S) {int我;real_T * xcont = ssGetContStates(年代);int_T nCStates = ssGetNumContStates(年代);real_T * xdisc = ssGetRealDiscStates(年代);int_T nDStates = ssGetNumDiscStates(年代);(我= 0;我< nCStates;我+ +){* xcont + + = 1.0;}(i = 0;我< nDStates; i++) { *xdisc++ = 1.0; } } #endif /* MDL_INITIALIZE_CONDITIONS */
对于初始化只有连续州的另一个例子,看看resetint.c
。
另请参阅
mdlStart
,mdlOutputs
,ssIsFirstInitCond
,ssGetContStates
,ssGetDiscStates
,ssGetTStart
,ssGetT
,InitializeConditions
版本历史
之前介绍过的R2006a