Matlab面向对象编程 - 如何检查两个对象是否相等

6
我想知道是否有一种简单的方法来检查两个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

在实例化两个部分后,我想检查它们是否相同(在上面的情况下它们是相等的)。我该如何做到这一点?
2个回答

5

isequal 是您想要的函数,但是此页面提供了有关比较和排序句柄对象的更多信息。 eq (==)测试两个对象是否具有相同的句柄,即句柄相等性,而isequal测试两个对象是否具有相等的属性值。


0

如果您想使用==缩写,可以在您的类中重载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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接