2017-02-21 24 views
2

В C++ я бы просто сравнил адреса памяти обоих объектов. Как мне сделать что-то подобное в MATLAB?MATLAB - Как сравнить, если два объекта одинаковые или разные

Худший случай должен иметь статическую переменную, которая выполняет итерацию в каждом конструкторе, и каждый объект получает текущее значение как идентификатор. Но есть ли лучшее решение?

Заранее спасибо.

@Edit: Я хотел бы продлить этот вопрос, предположив, я некоторые заданным/не изменчив классов, наследующих ручку и перегружать эк. Если я хочу сравнить два объекта этого класса могу ли я как-то лить оба экземпляра для обработки и использовать реализацию эквалайзера суперкласса?

+0

Просто, чтобы быть ясным: вы конкретно спрашиваете о классах Matlab, не так ли? –

+0

Да, я объяснил/сказал что-то не так? – baxbear

+0

Нет, нет, но многие думают, что матрицы/структуры/ячейки в MATLAB ведут себя как классы и считают, что 'A = ones (3); B = A', 'B' и' A' совпадают, а они нет. Просто разъясняю вам, где вас не смущает, и вы, где говорите конкретно [MATLABs oop] (https://uk.mathworks.com/help/matlab/object-oriented-programming.html). –

ответ

3

Чтобы проверить, что два объекта ручки a и b обратитесь к тому же экземпляру, вам нужно всего лишь использовать a == b. Это то же самое, что и eq(a, b). Это defined behaviour of == for handle objects. I.e., для объектов handle, == проверяет соответствие экземпляров, а не равенство значений внутри экземпляров. Это отличается от объектов значений.

Для этого вам необходимо использовать объекты дескриптора (classdef myObject < handle), потому что не имеет смысла тестировать экземпляры объектов значений.

N.B. если вам также нужно получить какой-то идентификатор экземпляра для объекта handle, тогда вам нужно сделать что-то вроде описания с использованием постоянной переменной. Here's an example. В этом случае я бы сделал базовый класс для всех ваших объектов, поэтому вам не пришлось бы копировать один и тот же код в каждый класс. Но это не нужно, если все, что вы хотите сделать, это проверить два экземпляра.