主要内容

指定MATLAB系统块的输出特性

本例展示如何指定MATLAB系统块的输出大小、数据类型和复杂性。

系统对象

系统对象允许您使用MATLAB实现算法。系统对象是一种特殊的MATLAB对象,专门为实现和模拟输入随时间变化的动态系统而设计。

定义System对象后,可以使用MATLAB System块将其包含在Simulink模型中。金宝app

模型描述

这个例子有一个MATLAB系统块,它将输入的秒数添加到当前时间,并将得到的小时、分钟和秒作为输出。每个输出端口的输出值显示在显示块中。

此示例演示如何指定System对象的输出大小、数据类型和复杂性。当MATLAB系统块不能自动推断输出属性时,指定输出属性。MATLAB System块使用System对象PropagateOutputSpecs它实现了传播输入数据类型、大小和复杂性的方法。

系统对象类定义

您可以通过在模块对话框中点击“源代码”超链接来访问MATLAB系统模块使用的MATLAB源代码。System对象PropagateOutputSpecs实现了stepImpl方法,该方法将以秒为单位的输入值添加到当前时间,并输出结果的小时、分钟和秒。的stepImpl方法使用datetime函数来计算其输出。自datetime函数不支持代码生成,MATLAB金宝app系统块不能自动推断输出规格。System对象实现了以下方法来指定输出属性:

  • getOutputSizeImpl-指定输出大小

  • getOutputDataTypeImpl—指定输出数据类型

  • isOutputComplexImpl-指定输出复杂度

  • isOutputFixedSizeImpl—是否允许输出变大小

classdef PropagateOutputSpecsSystem % PropagateOutputSpecs Propagation in 金宝appSimulink methods(Access = protected) function [h, m, s] = stepImpl(~, secs) %添加输入小时,分钟和秒到当前时间d = datetime;D = D +秒(秒);H =小时(d);M =分钟(d);S =秒(d);end function [o1, o2, o3] = getOutputSizeImpl(obj) %输出端口与输入端口相同的返回大小inSize = propagatedInputSize(obj, 1);o1 = inSize;o2 = inSize;o3 = inSize; end function [o1, o2, o3] = getOutputDataTypeImpl(obj) % Return data type for output port to be same as input port inType = propagatedInputDataType(obj, 1); o1 = inType; o2 = inType; o3 = inType; end function [o1, o2, o3] = isOutputComplexImpl(~) % Return output port complexity to be real o1 = false; o2 = false; o3 = false; end function [o1, o2, o3] = isOutputFixedSizeImpl(~) % Return true for each output port with fixed size o1 = true; o2 = true; o3 = true; end end end

另请参阅

||||

相关的话题