限制属性值为有限列表
当您想要用一组有限的可接受值来创建System对象™属性时,您可以使用枚举或属性验证。
对象中使用的System对象MATLAB系统在仿真软件金宝app®您可以使用枚举或属性验证。如果使用枚举,还可以从金宝app仿真软件。IntEnumType
.您可以使用这种类型的枚举向MATLAB System块的输入或输出添加属性(例如自定义头)。看到在Simulink模型中使用枚举数据金宝app(金宝app模型).
地产验证mustBeMember
要使用属性验证来限制属性值,请使用mustBeMember
验证功能。
此示例定义了风格
属性可以具有这些值固体
,破折号
,或点
.默认值为固体
和(1,1)
将属性定义为标量。
属性(1,1)string {mustBeMember(Style, [)]“固体”,“冲”,“点”])} =“固体”;结束
matlab.system.mustBeMember
代替。属性样式(1,:)char {matlab.系统。mustBeMember(风格,“固体”,“冲”,“点”])} =“固体”;结束
枚举属性
要在System对象中使用枚举数据,请引用枚举作为属性,并在单独的类定义文件中定义枚举类。
要创建一个枚举属性,你需要:
设置为枚举类的System对象属性。
定义属性的所有可能值的关联枚举类定义。
这个例子为System对象定义了一个颜色枚举属性。枚举类的定义ColorValues
是:
classdefColorValues < int32枚举蓝(0)红(1)绿(2)结束结束
ColorValues
类继承自int32
用于代码生成兼容性。枚举值必须有效MATLAB标识符.
在System对象中,颜色
属性定义为ColorValues
对象与蓝色的
作为默认。的(1,1)
定义了颜色
属性作为标量:
属性颜色(1,1)ColorValues = ColorValues.blue结束
创建一个Whiteboard System对象
这个例子展示了类的定义白板
系统对象™,有限列表属性的两种类型,以及如何使用对象。每次运行白板对象时,它都会在白板上画一条线。
的定义白板
系统对象
类型Whiteboard.m
classdef白板< matlab。%属性(不可调)颜色(1,1)ColorValues = ColorValues。blue Style (1,1) string {mustBeMember(Style, ["solid","dash","dot"])} = "solid";end methods (Access = protected) function stepImpl(obj) h = Whiteboard.getWhiteboard();开关obj。风格case "solid" linestyle = "-"; case "dash" linestyle = "--"; case "dot" linestyle = ":"; end plot(h, randn([2,1]), randn([2,1]), ... "Color",string(obj.Color), "LineStyle",linestyle); end function releaseImpl(~) cla(Whiteboard.getWhiteboard()); hold on end end methods (Static) function a = getWhiteboard() h = findobj('tag','whiteboard'); if isempty(h) h = figure('tag','whiteboard'); hold on end a = gca; end end end
构造System对象。
greenInk =白板;blueInk =白板;
更改颜色并设置蓝色线条样式。
greenInk。颜色=“绿色”;blueInk。颜色=“蓝色”;blueInk。风格=“点”;
画几条线。
为i = 1:3 greenInk ();blueInk ();结束
清除白板
释放(greenInk);释放(blueInk);