2013-11-08 3 views
2

Мне интересно, можно ли создать собственные операторы в MATLAB 2013a.Возможно ли реализовать пользовательский оператор в MATLAB?

В качестве примера скажем, что я хочу определить новый оператор ===, чтобы проверить, все ли элементов между двумя матрицами равны. В этом случае

x = ones(10,1); 
y = ones(10,1); 
z = 2*ones(10,1); 

all(x==y) = 1 
x===y = 0 

all(z==y) = 0 
z===y =0 

Возможно ли реализовать что-то подобное? Если да, то как я могу это сделать?

+0

Я уверен, что matlab имеет фиксированное сопоставление между (орфографией оператора) и (именем функции реализации), например, что '. +' Переходит в 'plus' и' * 'переходит в' mtimes'. Эта система позволяет вам определять поведение каждого оператора при использовании его собственных типов объектов, но новые операторы должны выполняться как обычные функции. –

ответ

4

[взято из previous answer шахты]

Попробуйте использовать operator. Он используется для определения новых пользовательских символов оператора или для их удаления (вам понадобится символическая панель инструментов).

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

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

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

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

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

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

Подробнее см. В статье documentation.

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