【问题标题】:Object array method dispatching对象数组方法调度
【发布时间】:2010-10-17 10:27:24
【问题描述】:

在MATLAB的新对象模型中(classdef等):如果我有一个对象的数组,并且我调用了一个普通的方法,是为每个对象调用的方法,还是为整个数组,即单个传递给方法的对象,还是整个数组?我知道在旧模型中,它是作为整个数组分派的。

【问题讨论】:

    标签: matlab matlab-class


    【解决方案1】:

    如果你有:

    classdef MyObject
    
    methods
        function foo(obj)
        ...
    end
    

    然后你打电话

    >> foo(myObjArray)
    

    然后对 foo() 的单个调用将接收整个数组。从那里您可以编写代码来处理 obj 的标量情况或 obj 的向量情况。

    【讨论】:

      【解决方案2】:

      这取决于您的方法是否是矢量化的。举个简单的例子:

      未矢量化

      function result = mySimpleMultiply(a,b)
      
      result = a*b;
      

      矢量化

      function result = myVectorizedMultiply(a,b)
      
      result = a.*b;
      

      【讨论】:

      • 我确定你是想帮忙,但这到底是如何回答这个问题的?
      • 也许我应该补充一点,MATLAB 将所有变量都视为数组,所以如果你有一个元素,比如 x = 2,x 是一个 1×1 双精度数组。然后你必须相应地编写你的函数,无论是否面向对象。
      猜你喜欢
      • 2012-05-20
      • 2015-02-12
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      相关资源
      最近更新 更多