此示例演示如何通过使用结构以编程方式配置引用模型的多个实例,以便对同一块参数使用不同的值。
当您想要添加、重命名或删除参数时,可以使用结构来减少维护工作量。使用结构,模型的数学功能是相同的。
将参数值替换为的结构的步骤ex_模型参数参考
和ex_模型参数
,请按照以下步骤操作。
开放式ex_模型参数参考
.该模型表示可重用的算法。
Open_System(“ex_model_arg_ref”)
创建一个结构,该结构中存在的每个参数对象都包含一个字段ex_模型参数参考
工作区。为每个字段指定值。
structForInst1.gain=3.17;structForInst1.coeff=1.05;
将结构存储在万博1manbetxSimulink.参数
目的。
structforinst1param = 万博1manbetxsimulink.parameter(structforinst1);
抄袭万博1manbetxSimulink.参数
将对象放入ex_模型参数参考
在本例中,命名对象的副本结构参数
.
modelWorkspace=get_参数(“ex_model_arg_ref”,“模型工作区”);分配(模型工作区),“structArg”,复制(structForInst1Param));
配置结构参数
作为唯一的模型参数。
set_param(“ex_model_arg_ref”,“ParameterArgumentNames”,“structArg”)
在里面ex_模型参数参考
模型,设置获得增益块的参数设置为结构增益
设定分子离散滤波器组的参数结构参数
.
set_param(“ex_模型参数参考/增益”,“收益”,'structarg.gain')设置参数('ex_model_arg_ref /离散滤波器',...“分子”,“structArg.coeff”)
将现有结构复制为structForInst2Param
.
structforinst2param = copy(structforinst1param);
将两个结构中的字段值设置为用于在模型块中设置模型参数值的相同数字。
structForInst1Param.Value.coeff=0.98;structForInst1Param.Value.gain=2.98;structForInst2Param.Value.coeff=1.11;structForInst2Param.Value.gain=3.34;
开放式ex_模型参数
. 此模型表示使用可重用算法的多个实例的系统模型。
Open_System(“ex_model_arg”)
例如模型模型
设置结构参数到StructForInst1参数
.例如模型Model1.
设置结构参数到structForInst2Param
.
instSpecParamsStruct=获取参数('ex_model_arg / model',“InstanceParameters”); instspecparamssstruct1=获取参数(“ex_model_arg/Model1”,“InstanceParameters”);instSpecParamsStruct(1).值=“StructForInst1参数”;instSpecParamsStruct1(1).值=“structForInst2Param”;设置参数('ex_model_arg / model',“InstanceParameters”,instSpecParamsStruct);设置参数(“ex_model_arg/Model1”,“InstanceParameters”,instSpecParamsStruct1);
你可以使用万博1manbetx模拟总线
对象作为结构的数据类型。总线对象确保特定于实例的结构的特性,例如字段的名称和顺序,匹配模型工作区中的结构的特征。
要将结构的数据类型设置为总线对象,请执行以下步骤。
使用万博1manbetxSimulink.Bus.createObject
函数创建总线对象。对象中元素的层次结构与结构字段的层次结构匹配。对象的默认名称为SLBUS1.
.
万博1manbetxSimulink.Bus.createObject(StructForInst1参数值);
通过复制来重命名总线对象。
myParamStructType=复制(slBus1);
使用总线对象在基本工作空间中设置参数对象的数据类型。
structForInst1Param.DataType=“公共汽车:MyParamStructType”; structForInst2Param.DataType=“公共汽车:MyParamStructType”;
对于结构参数
对象,集合数据类型
到公共汽车:MyParamStructType.
.
temp=getVariable(modelWorkspace,“structArg”);temp=复制(temp);temp.DataType=“公共汽车:MyParamStructType”; 分配(模型工作区),“structArg”,复制(temp));close_system(“ex_model_arg_ref”,0)关闭系统(“ex_model_arg”,0)