Путем реализации операторов, которые подходят для класса, можно интегрировать объекты класса на язык 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) | Логический AND |
| or (a,b) | Логический OR |
| not (a) | Логический НЕТ |
|
| Оператор двоеточия |
|
| Комплексное сопряженное транспонирование |
|
| Матрица транспонирует |
|
| Горизонтальная конкатенация |
| Вертикальная конкатенация | |
|
| Преобразованная в нижний индекс ссылка |
|
| Преобразованное в нижний индекс присвоение |
|
| Нижний индекс |