Matlab oop-如何检查两个对象是否相等
我想知道是否有一种简单的方法来检查两个Matlab对象是否相等。我得到Matlab oop-如何检查两个对象是否相等,matlab,oop,Matlab,Oop,我想知道是否有一种简单的方法来检查两个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 fpri
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
在实例化两个部分之后,我想检查它们是否相同(在上面的例子中,它们是相等的)。我该怎么做呢?可能是您想要的,但是有关于比较和排序句柄对象的更多信息
eq
(=
)测试两个对象是否具有相同的句柄,即句柄相等,而isequal
测试两个对象是否具有相等的属性值。如果要使用=
速记,可以在类中重载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