Путем реализации операторов, соответствующих вашему классу, можно интегрировать объекты своего класса в MATLAB® язык. Для примера объекты, которые содержат числовые данные, могут задавать арифметические операции, такие как +
, *
, -
чтобы можно было использовать эти объекты в арифметических выражениях. Реализуя реляционные операторы, можно использовать объекты в условных операторах, например switch
и if
операторы.
Можно реализовать операторов MATLAB для работы с объектами вашего класса. Для реализации операторов задайте связанные методы классов.
Каждый оператор имеет связанную функцию (например, оператор + имеет связанную plus.m
функция). Можно реализовать любой оператор, создав метод класса с соответствующим именем. Этот способ может выполнять любые шаги, подходящие для выполняемой операции.
Список операторов и связанных имен функции см. в разделе «Операторы MATLAB и связанные функции».
Определяемые пользователем классы имеют более высокий приоритет, чем встроенные классы. Например, предположим q
является объектом класса double
и p
является определяемым пользователем классом. Оба эти выражения генерируют вызов plus
метод в классе user-define, если он существует:
q + p p + q
Может ли этот метод добавить объекты класса double
и определяемый пользователем класс зависит от того, как вы реализуете метод.
Когда p
и q
являются объектами разных классов, MATLAB применяет правила приоритета, чтобы определить, какой метод использовать.
Приоритет объекта в вызове метода предоставляет информацию о том, как MATLAB определяет, какой метод вызывать.
Перегруженные операторы сохраняют первоначальный приоритет MATLAB для оператора. Для получения информации о приоритете оператора см. раздел Приоритет операторов.
The Adder
класс реализует сложение для объектов этого класса путем определения plus
способ. Adder
определяет сложение объектов как сложение NumericData
значения свойств. The plus
метод создает и возвращает Adder
объект, чей NumericData
значение свойства является результатом сложения.
The Adder
класс также реализует оператор меньше, чем (<
) путем определения lt
способ. The 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 |
|
| Оператор двоеточия |
|
| Комплексная сопряженная транспозиция |
|
| Матричная транспонирование |
|
| Горизонтальная конкатенация |
|
| Вертикальная конкатенация |
|
| Подписанная ссылка |
|
| Назначение по подписке |
|
| Индекс индекса индекса |