2011-11-16 3 views
8

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

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

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

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

Я с удовольствием перегружаю logical при необходимости.

ответ

5

Невозможно определить новых операторов в MATLAB, поскольку несколько потоков, таких как this one, предлагают. Однако, если вы хотите до перегружать имеющегося у вас оператора класс, вот documentation page MATLAB, хотя я уверен, что вы его уже видели.

+0

Я думал, что это, вероятно, так и есть, - просто надеялся, что у кого-то есть умный хак, который может его достичь. О, хорошо :( –

+1

В настоящее время ни одна из этих ссылок не работает ..... Обновление требуется? – hyprfrcb

2

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

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

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

Prefix: Вход ++ х приводит к f (x).

Postfix: вход x ++ приводит к f (x).

Binary: Вход x ++ y ++ z приводит к f (f (x, y), z).

Nary: Вход x ++ y ++ z приводит к f (x, y, z)).

Подробнее см. В документации по Matlab по приведенной выше ссылке.

+0

+1 для этого приятного решения. Жаль, что он доступен только в последних версиях Matlab ... – Shai

+2

Это было бы идеально, если бы 'operator' были часть ядра MATLAB, но это часть Symbolic Toolbox. –

Смежные вопросы