Определение дополнительных инфиксных операторов в MATLAB - PullRequest
8 голосов
/ 16 ноября 2011

Есть ли способ определить дополнительные инфиксные операторы в MATLAB?

В частности, я бы хотел определить два инфиксных оператора -> и <-> (эти символы были бы идеальными, но это могло бы бытьодин символ (если необходимо), который вызывает функции implies и iff так же, как & вызывает and и + вызывает plus.

function z = implies(x, y)
    z = ~x|y;

function z = iff(x, y)
    z = x&y | ~x&~y;

Ярад перегрузить logical при необходимости.

Ответы [ 2 ]

5 голосов
/ 16 ноября 2011

Нет способа определить новые операторы в MATLAB, как предлагают несколько потоков, таких как , этот .Однако, если вы хотите перегрузить существующий оператор для вашего класса , вот страница документации в MATLAB , хотя я уверен, что вы уже виделиэто.

2 голосов
/ 02 января 2013

Как насчет использования operator? он используется для определения новых пользовательских символов оператора или для их удаления.

operator(symb, f, T, prio) определяет новый символ оператора symb типа T с приоритетом prio. Функция f вычисляет выражения с помощью оператора new.

Учитывая символ оператора "++", скажем, с функцией оценки f, синтаксический анализатор создает следующие выражения в зависимости от типа оператора:

Префикс : ввод ++ x приводит к f (x).

Постфикс : ввод x ++ приводит к f (x).

Двоичный : ввод x ++ y ++ z приводит к f (f (x, y), z).

Нет : ввод x ++ y ++ z приводит к f (x, y, z)).

см. Больше в документации по Matlab по ссылке выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...