【问题标题】:Set Matlab function parameter as uint8将 Matlab 函数参数设置为 uint8
【发布时间】:2016-11-30 11:00:10
【问题描述】:

是否可以在 Matlab 中说出函数的期望?像这样:

function functionA( obj,  uint8(param) )

这里我是说函数需要一个 uint8 类型的参数。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    不在函数签名上。通常,您可以通过断言块来执行此操作:

    function (obj, param)
    
        assert(isa(param, 'uint8'),...
               [mfilename ':invalid_datatype'],...
               'Parameter ''param'' must be of class ''uint8''; received ''%s''.',...
               class(param));
    

    【讨论】:

      【解决方案2】:

      为了补充罗迪的回答,有四种方法可以做到这一点:

      1. 如果参数不是预期的类型,请使用条件并引发异常。这种方法的问题是你必须写很多代码。
      2. 使用断言。请参阅罗迪的回答或here。有人可能会争辩说这不是断言的用途,但您当然可以这样使用它们。
      3. 使用validateattributes函数。见here。这是简单性和实用性之间的一个很好的平衡。它允许您检查参数中的许多属性(通常是代码任何部分的任何变量)
      4. 使用inputParser 类。见here。这是解析输入的最强大的方法,但可能有点矫枉过正。此外,创建inputParser 对象的成本意味着对于重复调用的函数可能不是一个好主意。不过,它对于公共 API 来说非常好。

      【讨论】:

        猜你喜欢
        • 2020-06-08
        • 1970-01-01
        • 1970-01-01
        • 2015-03-31
        • 2011-11-06
        • 2014-04-25
        • 2013-11-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多