有时,Simulink万博1manbetx.®不能在模型编译期间推断System对象™的输出特征。要给Simuli万博1manbetxnk更多关于System对象输出的信息,请使用以下方法。
属性指定System对象输出的大小getOutputSizeImpl
方法。当Simulink无法在模型编译期间无法从万博1manbetx输入中推断出输出大小时,使用此方法。例如,当系统对象具有多个输入或输出或具有可变的输出时。
对于可变大小的输入,传播的输入大小来自传播inputsizeimpl.
根据环境的不同而不同。
马铃薯®—当你第一次运行一个对象时,它使用输入的实际大小。
万博1manbetxSimulink - 在模型运行之前设置所有输入大小的最大值,并且在运行期间不会更改。
类的子类matlab。系统
基类和传播
mixin类。
Classdef.逆符号......matlab.system.mixin.propagates.
使用getOutputSizeImpl
方法指定输出大小。
方法(访问=保护)函数sizeout = getoutputsizeimpl(〜)sizeout = [1 1];结尾结尾
在完整的类定义文件中查看该方法。
Classdef.逆符号%逆决计数在阈值高于属性阈值= 1结尾属性(DiscreteState)数结尾方法(访问=保护)函数setupimpl(obj)obj.count = 0;结尾函数y = stepimpl(obj,u1,u2)如果u1大于阈值,则添加计数如果U2为真,则重置%如果(u2) obj。数数=0;eleesif.(任何(u1> obj.threshold))obj.count = obj.count + 1;结尾y = obj.Count;结尾函数resetImpl (obj) obj。数= 0;结尾函数[sz,dt,cp] = getDiscrotestatesPecificationImpl(〜,name)如果Strcmp(名称,'数数') sz = [1 1];dt ='双倍的';cp = false;别的错误(['错误:状态名称不正确:', 名称。']);结尾结尾函数getOutputDataTypeImpl(~) dataout ='双倍的';结尾函数sizeout = getoutputsizeimpl(〜)sizeout = [1 1];结尾函数cplxout = isOutputComplexImpl(~) cplxout = false;结尾函数fixedout = isOutputFixedSizeImpl(~) fixedout = true;结尾函数flag = isinputsizemutableimpl(〜,idx)如果Idx == 1 flag = true;别的标志= false;结尾结尾结尾结尾
指定System对象输出为固定大小。固定大小的输出总是相同大小,而可变大小的输出可以是不同大小的向量。
万博1manbetxSimulink无法推断出可变大小输出的输出大小。为避免错误,实施IsoutputixedSizeImpl.
和getOutputSizeImpl
。
IsoutputixedSizeImpl.
接受系统对象句柄并返回一个标志数组。数组大小等于输出端口的大小。这些标志的值及其含义如下:
真正的
- 输出大小是固定的(输出端口Matlab系统块会创建可变大小信号)
错误的
-输出大小是可变的(输出端口在Matlab系统块会产生固定尺寸的信号)
类的子类matlab。系统
基类和matlab.system.mixin.propagates.
mixin类。
Classdef.逆符号......matlab.system.mixin.propagates.
使用IsoutputixedSizeImpl.
方法指定输出为固定大小。
方法(访问=保护)函数fixedout = isOutputFixedSizeImpl(~) fixedout = true;结尾结尾
在完整的类定义文件中查看该方法。
Classdef.逆符号%逆决计数在阈值高于属性阈值= 1结尾属性(DiscreteState)数结尾方法(访问=保护)函数setupimpl(obj)obj.count = 0;结尾函数y = stepimpl(obj,u1,u2)如果u1大于阈值,则添加计数如果U2为真,则重置%如果(u2) obj。数数=0;eleesif.(任何(u1> obj.threshold))obj.count = obj.count + 1;结尾y = obj.Count;结尾函数resetImpl (obj) obj。数= 0;结尾函数[sz,dt,cp] = getDiscrotestatesPecificationImpl(〜,name)如果Strcmp(名称,'数数') sz = [1 1];dt ='双倍的';cp = false;别的错误(['错误:状态名称不正确:', 名称。']);结尾结尾函数getOutputDataTypeImpl(~) dataout ='双倍的';结尾函数sizeout = getoutputsizeimpl(〜)sizeout = [1 1];结尾函数cplxout = isOutputComplexImpl(~) cplxout = false;结尾函数fixedout = isOutputFixedSizeImpl(~) fixedout = true;结尾函数flag = isinputsizemutableimpl(〜,idx)如果Idx == 1 flag = true;别的标志= false;结尾结尾结尾结尾
使用该系统对象输出的数据类型getOutputDataTypeImpl
方法。第二个示例显示如何使用总线输出指定增益对象。当Simulink无法在模型编译期间或想要万博1manbetx不同的输入和输出数据类型时,使用此方法。如果想要总线输出,也使用getOutputDataTypeImpl
方法。要使用总线输出,必须在基础工作区中定义总线数据类型,您必须包含getOutputDataTypeImpl
方法。
对于两个示例,来自两个例子的子类matlab。系统
基类和matlab.system.mixin.propagates.
mixin类。
Classdef.DataTypeChange < matlab。系统&......matlab.system.mixin.propagates.
在类定义文件中指定如何从MATLAB控制输出数据类型系统堵塞。使用getOutputDataTypeImpl
方法将输出数据类型从双精度型更改为单精度型,或将输入传播为双精度型。类中的输出数据类型Stepimpl.
方法,如有必要。
方法(访问=保护)函数= getOutputDataTypeImpl (obj)如果obj.quantize == trueout ='单身的';别的= propagatedInputDataType (obj, 1);结尾结尾结尾
Classdef.DataTypeChange < matlab。系统&......matlab.system.mixin.propagates.属性(nononnable)量化= false;结尾方法(访问=保护)函数y = stepimpl(obj,u)如果obj.quantize == true%强制转换以使输出数据类型与输入数据类型不同。Y =单身(U);别的%传播输出数据类型。y = u;结尾结尾函数= getOutputDataTypeImpl (obj)如果obj.quantize == trueout ='单身的';别的= propagatedInputDataType (obj, 1);结尾结尾结尾结尾
此模型显示了传播的双数据类型。
此模型显示将数据类型从DOUBLE更改为单个单个。这展示块显示量化数据的效果。
块面罩Matlab系统块包括在使用传播之间切换的编辑字段(量化=错误的
)和从双倍切换到单个(量化=真正的
)。
使用getOutputDataTypeImpl
方法将输出数据类型指定为总线。在属性中指定总线名称。
属性(非全额)outputbusname ='bus_name';结尾方法(访问=保护)函数out = getoutputdatatypeimpl(obj)out = obj.outputbusname;结尾结尾
在完整的类定义文件中查看该方法。类定义文件中还包含用于实现对象自定义图标的代码Matlab系统堵塞
Classdef.busGain < matlab。系统&matlab.system.mixin.propagates.总线输入增益为2。属性gaink = 2;结尾属性(nononnable)outputbusname ='bus_name';结尾方法(访问=受保护)函数OUT = STEPIMPL(OBJ,IN)OUT.A = OBJ.GAINK * IN.A;out.b = obj.gaink * in.b;结尾函数out = getoutputsizeimpl(obj)out =传播inputsize(obj,1);结尾函数输出= isOutputComplexImpl(obj)输出= propagatedInputComplexity(obj, 1);结尾函数out = getoutputdatatypeimpl(obj)out = obj.outputbusname;结尾函数OUT = ISOUTPUTFIXEDSIZEIMPL(obj)out =传播inputfixedsize(obj,1);结尾结尾结尾
属性指定System对象输出是复杂的还是真实的isOutputComplexImpl
方法。当Simulink不能在模型编译期间从输入万博1manbetx推断输出复杂度时,请使用此方法。
类的子类matlab。系统
基类和传播
mixin类。
Classdef.逆符号......matlab.system.mixin.propagates.
使用isOutputComplexImpl
指定输出是真实的方法。
方法(访问=保护)函数cplxout = isOutputComplexImpl(~) cplxout = false;结尾结尾
在完整的类定义文件中查看该方法。
Classdef.逆符号%逆决计数在阈值高于属性阈值= 1结尾属性(DiscreteState)数结尾方法(访问=保护)函数setupimpl(obj)obj.count = 0;结尾函数y = stepimpl(obj,u1,u2)如果u1大于阈值,则添加计数如果U2为真,则重置%如果(u2) obj。数数=0;eleesif.(任何(u1> obj.threshold))obj.count = obj.count + 1;结尾y = obj.Count;结尾函数resetImpl (obj) obj。数= 0;结尾函数[sz,dt,cp] = getDiscrotestatesPecificationImpl(〜,name)如果Strcmp(名称,'数数') sz = [1 1];dt ='双倍的';cp = false;别的错误(['错误:状态名称不正确:', 名称。']);结尾结尾函数getOutputDataTypeImpl(~) dataout ='双倍的';结尾函数sizeout = getoutputsizeimpl(〜)sizeout = [1 1];结尾函数cplxout = isOutputComplexImpl(~) cplxout = false;结尾函数fixedout = isOutputFixedSizeImpl(~) fixedout = true;结尾函数flag = isinputsizemutableimpl(〜,idx)如果Idx == 1 flag = true;别的标志= false;结尾结尾结尾结尾
使用该方法指定离散状态属性的大小,数据类型和复杂性getDiscretestatesPecificationImpl.
方法。当系统对象有一个属性时,使用此方法DiscreteState
属性,并且在模型编译期间,S万博1manbetximulink无法推断出输出规范。
类的子类matlab。系统
基类和来自传播
mixin类。
Classdef.逆符号......matlab.system.mixin.propagates.
使用getDiscretestatesPecificationImpl.
指定大小和数据类型的方法。还指定了离散状态属性的复杂性数数
,用于计数器重置示例。
函数[sz,dt,cp] = getDiscrotestatesPecificationImpl(〜,name)如果Strcmp(名称,'数数') sz = [1 1];dt ='双倍的';cp = false;别的错误(['错误:状态名称不正确:', 名称。']);结尾结尾
在完整的类定义文件中查看该方法。
Classdef.逆符号%逆决计数在阈值高于属性阈值= 1结尾属性(DiscreteState)数结尾方法(访问=保护)函数setupimpl(obj)obj.count = 0;结尾函数y = stepimpl(obj,u1,u2)如果u1大于阈值,则添加计数如果U2为真,则重置%如果(u2) obj。数数=0;eleesif.(任何(u1> obj.threshold))obj.count = obj.count + 1;结尾y = obj.Count;结尾函数resetImpl (obj) obj。数= 0;结尾函数[sz,dt,cp] = getDiscrotestatesPecificationImpl(〜,name)如果Strcmp(名称,'数数') sz = [1 1];dt ='双倍的';cp = false;别的错误(['错误:状态名称不正确:', 名称。']);结尾结尾函数getOutputDataTypeImpl(~) dataout ='双倍的';结尾函数sizeout = getoutputsizeimpl(〜)sizeout = [1 1];结尾函数cplxout = isOutputComplexImpl(~) cplxout = false;结尾函数fixedout = isOutputFixedSizeImpl(~) fixedout = true;结尾函数flag = isinputsizemutableimpl(〜,idx)如果Idx == 1 flag = true;别的标志= false;结尾结尾结尾结尾
getDiscretestatesPecificationImpl.
|getOutputDataTypeImpl
|getOutputSizeImpl
|isOutputComplexImpl
|IsoutputixedSizeImpl.
|matlab.system.mixin.propagates.