主要内容

控制变量的选择装配子系统块蒙面变体使用掩码参数对象

本节显示了如何指定变量的选择和设置一个蒙面的主动选择变体装配子系统块使用口罩参数对象。

变体之间切换选择装配子系统块蒙面变体标签模式

在本例中,您创建一个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_linearControllervas_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类商店主动选择的名称nonlinearControllersubsystemFile。中使用的类还存储断点和表值nonLinearController模型的一维查找表。

类型vas_nonlinearController.m
classdef vas_nonlinearController < vas_controller属性断点表结束方法函数obj = vas_nonlinearController () obj。断点= 5;obj。表=双曲正切(5);obj。subsystemFile =“nonlinearController”;结束结束结束

在父母的模型设置参数对象值

双击控制器块对话框打开面具。

您所指定的值vssObj在面具对话框中映射到面具参数对象obj

使用obj,你可以实例化类vas_linearControllervas_nonlinearController。然后可以调用它的方法,getVariantChoicessetActiveVariant

例如,指定控制器的变体选择块,变体的选择说明符参数块设置为参数对话框obj.getVariantChoices ()

设置的积极选择变体装配子系统块,obj.setActiveVariant ()方法在其掩盖初始化代码。

设置主动选择使用掩码参数实例化类对象

案例1:linearController活跃和nonlinearController是不活跃的

当你指定vssObj作为vas_linearController,该值vas_linearController映射到面具参数对象obj。的变体的选择说明符参数值obj.getVariantChoices ()评估一个单元阵列,其中包含文件名linearControllernonlinearController添加变体选择的控制器。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 ()评估一个单元阵列,其中包含文件名linearControllernonlinearController添加变体选择的控制器。obj.setActiveVariant (gcb)面具的初始化代码集nonlinearController子系统是活跃的。

vssObj = vas_nonlinearController;= sim卡(“slexVariantAssemblySubsystemWithMaskInLabel”);情节(。来ut, out.yout); xlabel(的时间(秒))ylabel (“数据”)

另请参阅

添加或删除变量的选择变体装配子系统模块使用外部文件

变体之间切换选择装配子系统块蒙面变体的表达模式

在本例中,您创建一个MATLAB™类/变体的选择。激活一个变体的选择,实例化相应的类使用一个面具参数对象。你然后访问类属性的名字变体文件被激活。金宝app仿真软件®文件名然后比较了变体变体选择的名字通过评估变异控制表达式和激活的变体选择计算的表达式真正的

探索模型

打开模型slexVariantAssemblySubsystemWithMaskInExpression块,其中包含一个蒙面变体装配子系统,控制器

mdl =“slexVariantAssemblySubsystemWithMaskInExpression”;open_system (mdl)

控制器块有两个子系统参考选择,linearControllernonlinearController。被添加到的选择控制器块使用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;结束结束

这两个类slexVasExprLinearControllerslexVasExprNonLinearController继承财产的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,你可以实例化类slexVasExpLinearControllerslexVasExpNonLinearController。然后您可以访问其属性,variantFile让变体选择的文件名被激活。

案例1:linearController是活跃的,nonlinearController是不活跃的

当你指定ctrlObj作为slexVasExprLinearController,类slexVasExprLinearController被实例化。类属性包括variantFile正在初始化。

ctrlObj = slexVasExprLinearController;

在模拟中,slexVasExprLinearController的价值,ctrlObj映射到面具参数对象obj。左边和右边的变异控制表达式obj。variantFile = = slexVasExprControllerTypes.linearController每一个决心linearController。表达式的求值结果为真正的linearController变得活跃。

sim (mdl);

同样,设置nonlinearController活跃的,集ctrlObjslexVasExprNonLinearController

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的模拟运行

另请参阅

添加或删除变量的选择变体装配子系统模块使用外部文件