成一个单一的结构组多个模型参数
这个例子展示了如何以编程方式配置的多个实例引用模型来使用不同的值相同的块使用结构参数。
配置引用模型使用模型参数分为结构
您可以使用结构来减少维护的工作当你想添加、重命名或删除参数。结构,数学模型的功能是相同的。
更换与结构参数值ex_model_arg_ref
和ex_model_arg
,遵循这些步骤。
开放模式ex_model_arg_ref
。这个模型代表一个可重用的算法。
open_system (“ex_model_arg_ref”)
创建一个结构,其中包含一个字段的每个参数中存在的对象ex_model_arg_ref
工作区。每个字段指定一个值。
structForInst1。获得= 3.17;structForInst1。多项式系数= 1.05;
在一个存储结构万博1manbetxSimulink.Parameter
对象。
structForInst1Param = 万博1manbetxSimulink.Parameter (structForInst1);
复制万博1manbetxSimulink.Parameter
对象进ex_model_arg_ref
模型的工作空间。对于这个示例,名字对象的副本structArg
。
modelWorkspace = get_param (“ex_model_arg_ref”,“ModelWorkspace”);assignin (modelWorkspace“structArg”,复制(structForInst1Param));
配置structArg
作为唯一的模型参数。
set_param (“ex_model_arg_ref”,“ParameterArgumentNames”,“structArg”)
在ex_model_arg_ref
模型,设置获得参数的获得块structArg.gain
并设置分子参数的离散滤波器块structArg.coeff
。
set_param (“ex_model_arg_ref /增益”,“获得”,“structArg.gain”)set_param (“ex_model_arg_ref /离散滤波器”,…“分子”,“structArg.coeff”)
复制现有的结构structForInst2Param
。
structForInst2Param = (structForInst1Param)复印件;
设置字段值的两个结构相同的数字用于设置模型中的模型参数值。
structForInst1Param.Value。多项式系数= 0.98;structForInst1Param.Value。获得= 2.98;structForInst2Param.Value。多项式系数= 1.11;structForInst2Param.Value。获得= 3.34;
开放模式ex_model_arg
。这个模型代表一个系统模型,使用可重用的多个实例算法。
open_system (“ex_model_arg”)
对模型实例模型
,设置structArg来structForInst1Param
。对模型实例Model1
,设置structArg来structForInst2Param
。
instSpecParamsStruct = get_param (“ex_model_arg /模式”,“InstanceParameters”);instSpecParamsStruct1 = get_param (“ex_model_arg / Model1”,“InstanceParameters”);instSpecParamsStruct (1)。值=“structForInst1Param”;instSpecParamsStruct1 (1)。值=“structForInst2Param”;set_param (“ex_model_arg /模式”,“InstanceParameters”,instSpecParamsStruct);set_param (“ex_model_arg / Model1”,“InstanceParameters”,instSpecParamsStruct1);
使用总线对象数据类型的结构
您可以使用一个万博1manbetxSimulink.Bus
对象的数据类型结构。总线对象确保特定结构的特点,如字段的名称和顺序,匹配的特征结构模型中的工作区。
设置总线对象的数据类型结构,遵循这些步骤。
使用万博1manbetxSimulink.Bus.createObject
函数来创建总线对象。元素对象的层次结构与层次结构的字段。对象的缺省名称slBus1
。
万博1manbetxSimulink.Bus.createObject (structForInst1Param.Value);
重命名总线对象通过复制它。
myParamStructType = (slBus1)复印件;
参数的数据类型对象集的基本工作空间使用总线对象。
structForInst1Param。数据类型=“巴士:myParamStructType”;structForInst2Param。数据类型=“巴士:myParamStructType”;
为structArg
对象,设置数据类型
来总线:myParamStructType
。
temp = getVariable (modelWorkspace,“structArg”);temp =(临时)复印件;temp.DataType =“巴士:myParamStructType”;assignin (modelWorkspace“structArg”,复制(临时));close_system (“ex_model_arg_ref”,0)close_system (“ex_model_arg”,0)