【问题标题】:Matlab oop - how to check if two objects are equalMatlab oop - 如何检查两个对象是否相等
【发布时间】:2014-08-24 04:59:12
【问题描述】:

我想知道是否有一种简单的方法可以检查两个 Matlab 对象是否相等。我得到了

A = Section(1, Point(0, 0), Point(0, 0));
B = Section(1, Point(0, 0), Point(0, 0));
    if(A == B)              % I know this is incorrect, but how could I fix it up?
       fprintf('Equal\n');
    else
       fprintf('Not Equal\n');
    end

实例化两个部分后,我想检查它们是否相同(在上面的情况下它们相等)。我怎么能这样做?

【问题讨论】:

    标签: matlab oop


    【解决方案1】:

    isequal 可能是您想要的,但this page 有更多关于比较和排序句柄对象的信息。 eq (==) 测试两个对象是否具有相同的句柄,即句柄相等,而isequal 测试两个对象是否具有相等的属性值。

    【讨论】:

      【解决方案2】:

      如果你想使用== 速记,你可以在你的类中重载eq 方法。通过这种方式,您还可以轻松比较对象数组,只要它们具有相同的维度或其中一个是标量:

      function equal = eq(obj1, obj2)
          if isscalar(obj1) && isscalar(obj2) % fast handling for the easy case
              equal = isequal(obj1, obj2);
              return;
          end
      
          assert(isscalar(obj1) || isscalar(obj2) || isequal(size(obj1), size(obj2)), 'Inputs must have the same dimensions unless one is a scalar');
      
          if isscalar(obj1) && ~isscalar(obj2)
              obj1 = repmat(obj1, size(obj2));
          elseif isscalar(obj2) && ~isscalar(obj1)
              obj2 = repmat(obj2, size(obj1));
          end
      
          equal = arrayfun(@(o1, o2) isequal(o1, o2), obj1, obj2);
      end
      

      【讨论】:

        猜你喜欢
        • 2016-06-27
        • 2019-11-04
        • 1970-01-01
        • 2023-03-07
        • 2017-02-20
        • 1970-01-01
        • 2012-07-13
        • 1970-01-01
        相关资源
        最近更新 更多