我想知道是否可以在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
可以实现这样的东西吗?如果是这样,我该怎么办呢?
答案 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上查看更多内容。