控制变量的选择装配子系统块蒙面变体使用掩码参数对象
本节显示了如何指定变量的选择和设置一个蒙面的主动选择变体装配子系统块使用口罩参数对象。
变体之间切换选择装配子系统块蒙面变体标签模式
在本例中,您创建一个MATLAB™类/变体的选择。激活一个变体的选择,实例化相应的类使用一个面具参数对象。你然后访问类属性的名字变体的选择和设置选择是活跃的一个变体。
探索模型
打开模型slexVariantAssemblySubsystemWithMaskInLabel
块,其中包含一个蒙面变体装配子系统,控制器
。
open_system (“slexVariantAssemblySubsystemWithMaskInLabel”)
为参考模型定义类
在这个例子中,vas_controller
类是一个超类,包括属性和两个方法。的getVariantChoices
方法返回一个单元阵列的变体选择装配子系统块添加到变体。从列表中选择的setActiveVariant
方法设置选择,指定为subsystemFile
是活跃的。
类型vas_controller.m
classdef(抽象)vas_controller属性subsystemFile字符结束方法(静态)函数列表= getVariantChoices列表()= {‘linearController’,‘nonlinearController};结束结束方法函数setActiveVariant (obj,黑色)set_param(黑色,LabelModeActiveChoice, obj.subsystemFile)端端端
这两个类vas_linearController
和vas_nonlinearController
继承的vas_controller
超类。的vas_linearController
类商店主动选择的名称linearController
继承的财产subsystemFile
。中使用的类还存储分子和分母值离散传输Fcn块linearController模型。
类型vas_linearController.m
classdef vas_linearController < vas_controller属性分子分母结束方法函数obj = vas_linearController () obj。分子= [1 7];obj.denominator =(1 .09点0.5);obj。subsystemFile =“linearController”;结束结束结束
类似地,vas_nonlinearController
类商店主动选择的名称nonlinearController
在subsystemFile
。中使用的类还存储断点和表值nonLinearController模型的一维查找表。
类型vas_nonlinearController.m
classdef vas_nonlinearController < vas_controller属性断点表结束方法函数obj = vas_nonlinearController () obj。断点= 5;obj。表=双曲正切(5);obj。subsystemFile =“nonlinearController”;结束结束结束
在父母的模型设置参数对象值
双击控制器
块对话框打开面具。
您所指定的值vssObj
在面具对话框中映射到面具参数对象obj
。
使用obj
,你可以实例化类vas_linearController
或vas_nonlinearController
。然后可以调用它的方法,getVariantChoices
和setActiveVariant
。
例如,指定控制器的变体选择块,变体的选择说明符参数块设置为参数对话框obj.getVariantChoices ()
。
设置的积极选择变体装配子系统块,obj.setActiveVariant ()
方法在其掩盖初始化代码。
设置主动选择使用掩码参数实例化类对象
案例1:linearController活跃和nonlinearController是不活跃的
当你指定vssObj
作为vas_linearController
,该值vas_linearController
映射到面具参数对象obj
。的变体的选择说明符参数值obj.getVariantChoices ()
评估一个单元阵列,其中包含文件名linearController
和nonlinearController
添加变体选择的控制器。obj.setActiveVariant (gcb)
面具的初始化代码集linearController
子系统是活跃的。
vssObj = vas_linearController;= sim卡(“slexVariantAssemblySubsystemWithMaskInLabel”);情节(。来ut, out.yout); xlabel(的时间(秒))ylabel (“数据”)
案例2:linearController不活跃,nonlinearController活跃
当你指定vssObj
作为vas_nonlinearController
,该值vas_nonlinearController
映射到面具参数对象obj
。的变体的选择说明符参数值obj.getVariantChoices ()
评估一个单元阵列,其中包含文件名linearController
和nonlinearController
添加变体选择的控制器。obj.setActiveVariant (gcb)
面具的初始化代码集nonlinearController
子系统是活跃的。
vssObj = vas_nonlinearController;= sim卡(“slexVariantAssemblySubsystemWithMaskInLabel”);情节(。来ut, out.yout); xlabel(的时间(秒))ylabel (“数据”)
另请参阅
变体之间切换选择装配子系统块蒙面变体的表达模式
在本例中,您创建一个MATLAB™类/变体的选择。激活一个变体的选择,实例化相应的类使用一个面具参数对象。你然后访问类属性的名字变体文件被激活。金宝app仿真软件®文件名然后比较了变体变体选择的名字通过评估变异控制表达式和激活的变体选择计算的表达式真正的
。
探索模型
打开模型slexVariantAssemblySubsystemWithMaskInExpression
块,其中包含一个蒙面变体装配子系统,控制器
。
mdl =“slexVariantAssemblySubsystemWithMaskInExpression”;open_system (mdl)
的控制器
块有两个子系统参考选择,linearController
和nonlinearController
。被添加到的选择控制器
块使用slexVasExprControllerTypes
枚举类中。添加更多的选择,添加成员slexVasExprControllerTypes
。
类型slexVasExprControllerTypes.m
classdef slexVasExprControllerTypes <仿金宝app真软件。IntEnumType % % 2023年版权MathWorks公司枚举linearController (0) nonlinearController(1)结束
为参考模型定义类
在这个例子中,slexVasExprControllerVariant
类是一个超类,包括一个属性,variantFile
的枚举类型slexVasExprControllerTypes
。
类型slexVasExprControllerVariant.m
classdef(抽象)slexVasExprControllerVariant % %版权2023年MathWorks公司属性variantFile slexVasExprControllerTypes;结束结束
这两个类slexVasExprLinearController
和slexVasExprNonLinearController
继承财产的slexVasExprController
超类。的slexVasExprLinearController
类代表了linearController
变体。这类商店主动选择的名称linearController
继承的财产variantFile
。类还存储分子和分母值用于离散传输Fcn块linearController
模型。
类型slexVasExprLinearController.m
classdef slexVasExprLinearController < slexVasExprControllerVariant % % 2023年版权MathWorks公司属性分子分母结束方法函数obj = slexVasExprLinearController() %值属性obj的变体。分子= [1 7];obj.denominator =(1 .09点0.5);%指定obj文件对应哪个子系统。variantFile =“linearController”;结束结束结束
类似地,slexVasExprNonLinearController
类代表了nonlinearController
变体。它存储的名称主动选择nonlinearController
继承的财产variantFile
。这个类使用断点和表值存储在一维查找表的nonLinearController
模型。
类型slexVasExprNonLinearController.m
classdef slexVasExprNonLinearController < slexVasExprControllerVariant % % 2023年版权MathWorks公司%属性参数特定于该变体断点表方法结束函数obj = slexVasExprNonLinearController() %的额外的参数值obj。断点= 5;obj。表=双曲正切(5);%和文件obj。variantFile= 'nonlinearController'; end end end
设置主动选择使用掩码参数实例化类对象
在本例中,您指定的值ctrlObj
在面具的对话框控制器
块映射到面具参数对象obj
。使用obj
,你可以实例化类slexVasExpLinearController
或slexVasExpNonLinearController
。然后您可以访问其属性,variantFile
让变体选择的文件名被激活。
案例1:linearController
是活跃的,nonlinearController
是不活跃的
当你指定ctrlObj
作为slexVasExprLinearController
,类slexVasExprLinearController
被实例化。类属性包括variantFile
正在初始化。
ctrlObj = slexVasExprLinearController;
在模拟中,slexVasExprLinearController
的价值,ctrlObj
映射到面具参数对象obj
。左边和右边的变异控制表达式obj。variantFile = = slexVasExprControllerTypes.linearController
每一个决心linearController
。表达式的求值结果为真正的
和linearController
变得活跃。
sim (mdl);
同样,设置nonlinearController
活跃的,集ctrlObj
来slexVasExprNonLinearController
。
ctrlObj = slexVasExprNonLinearController;sim (mdl);
可选地,您可以绘制结果的变异选择如图所示:
在(1:2)= Si金宝appmulink.SimulationInput (mdl);在(1)= (1).setVariable (“ctrlObj”,slexVasExprLinearController);在(2)= (2).setVariable (“ctrlObj”,slexVasExprNonLinearController);= sim(中);图绘制((1)。来ut, out(1).yout); hold在((2)。来ut, out(2).yout) xlabel(的时间(秒))ylabel (“数据”)
(03 - mar - 2023 08:08:00)运行模拟……(03 - mar - 2023 08:08:01)完成1的2模拟运行(03 - mar - 2023 08:08:01)完成2 2的模拟运行
另请参阅