Реализуя операторы, соответствующие классу, можно интегрировать объекты класса в язык MATLAB ®. Например, объекты, содержащие числовые данные, могут определять такие арифметические операции, как+, *, - для использования этих объектов в арифметических выражениях. Реализуя реляционные операторы, можно использовать объекты в условных операторах, например switch и if заявления.
Для работы с объектами класса можно внедрить операторы MATLAB. Для реализации операторов определите связанные методы классов.
Каждый оператор имеет связанную функцию (например, оператор + имеет связанную plus.m функция). Можно реализовать любой оператор, создав метод класса с соответствующим именем. Этот способ может выполнять любые шаги, подходящие для реализуемой операции.
Список операторов и связанных имен функций см. в разделе Операторы MATLAB и связанные функции.
Определяемые пользователем классы имеют более высокий приоритет, чем встроенные классы. Например, предположим q является объектом класса double и p является определяемым пользователем классом. Оба этих выражения генерируют вызов plus метод в определяемом пользователем классе, если он существует:
q + p p + q
Может ли этот метод добавлять объекты класса double и определяемый пользователем класс зависит от способа реализации метода.
Когда p и q являются объектами различных классов, MATLAB применяет правила приоритета, чтобы определить, какой метод использовать.
Приоритет объекта при вызове метода предоставляет информацию о том, как MATLAB определяет метод для вызова.
Перегруженные операторы сохраняют исходный приоритет MATLAB для оператора. Сведения о приоритетности операторов см. в разделе Приоритетность операторов.
Adder класс реализует добавление для объектов этого класса путем определения plus способ. Adder определяет добавление объектов как добавление NumericData значения свойств. plus метод конструирует и возвращает Adder объект, чей NumericData значение свойства является результатом сложения.
Adder класс также реализует оператор «меньше» (<) путем определения lt способ. lt метод возвращает логическое значение после сравнения значений в каждом объекте NumericData собственность.
classdef Adder properties NumericData end methods function obj = Adder(val) obj.NumericData = val; end function r = plus(obj1,obj2) a = double(obj1); b = double(obj2); r = Adder(a + b); end function d = double(obj) d = obj.NumericData; end function tf = lt(obj1,obj2) if obj1.NumericData < obj2.NumericData tf = true; else tf = false; end end end end
Использование двойного преобразователя позволяет добавлять числовые значения в Adder и выполнять сложение с объектами класса.
a = Adder(1:10)
a =
Adder with properties:
NumericData: [1 2 3 4 5 6 7 8 9 10]Добавьте два объекта:
a + a
ans =
Adder with properties:
NumericData: [2 4 6 8 10 12 14 16 18 20]Добавьте объект с любым значением, которое может быть преобразовано в двойное:
b = uint8(255) + a
b =
Adder with properties:
NumericData: [256 257 258 259 260 261 262 263 264 265]Сравнить объекты a и b с использованием < оператор:
a < b
ans =
1Убедитесь, что класс обеспечивает любую проверку ошибок, необходимую для реализации конструкции класса.
В следующей таблице перечислены имена функций для операторов MATLAB. Реализация операторов для работы с массивами (скалярное расширение, векторизированные арифметические операции и так далее) также может потребовать изменения индексации и конкатенации. Ссылки в этой таблице используются для поиска конкретной информации по каждой функции.
Операция | Метод для определения | Описание |
|---|---|---|
|
| Двоичное сложение |
|
| Двоичное вычитание |
|
| Унарный минус |
|
| Унарный плюс |
|
| Элементное умножение |
|
| Умножение матрицы |
|
| Правое деление по элементам |
|
| Разделение по левому элементу |
|
| Правое деление матрицы |
|
| Матрица левого деления |
|
| Мощность по элементам |
|
| Мощность матрицы |
|
| Меньше, чем |
|
| Больше, чем |
| le(a,b) | Меньше или равно |
| ge(a,b) | Больше или равно |
| ne(a,b) | Не равно |
| eq(a,b) | Равенство |
| and(a,b) | ЛОГИЧЕСКОЕ И |
| or(a,b) | Логическое ИЛИ |
| not(a) | Логический NOT |
|
| Оператор двоеточия |
|
| Комплексное сопряженное транспонирование |
|
| Транспонирование матрицы |
|
| Горизонтальная конкатенация |
|
| Вертикальная конкатенация |
|
| Подстрочная ссылка |
|
| Подстрочное назначение |
|
| Индекс подстрочного индекса |