是否可以在MATLAB中实现用户定义的运算符?

时间:2013-11-08 22:23:41

标签: matlab

我想知道是否可以在MATLAB 2013a中创建自己的运算符。

作为一个例子,假设我想定义一个新的运算符===来检查两个矩阵之间的所有元素是否相等。在这种情况下,

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

可以实现这样的东西吗?如果是这样,我该怎么办呢?

1 个答案:

答案 0 :(得分:4)

[摘自我的previous answer

尝试使用operator。它用于定义新的用户定义的运算符符号或删除它们(您将需要符号工具箱)。

operator(symb, f, T, prio)定义了symb类型的新运算符符号T(前缀|后缀|二进制| Nary),优先级为prio。函数f使用new运算符计算表达式。

给定运算符符号“++”,比如评估函数f,解析器构建以下表达式,具体取决于运算符的类型,其中:

前缀:输入++ x导致f(x)。

Postfix :输入x ++导致f(x)。

二进制:输入x ++ y ++ z导致f(f(x,y),z)。

Nary :输入x ++ y ++ z导致f(x,y,z))。

在matlab的documentation上查看更多内容。