我想知道是否可以在 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
有可能实现这样的事情吗?如果是这样,我该怎么做?
我想知道是否可以在 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
有可能实现这样的事情吗?如果是这样,我该怎么做?
[取自我之前的回答]
尝试使用operator
. 它用于定义新的用户定义的运算符符号或删除它们(尽管您将需要符号工具箱)。
operator(symb, f, T, prio)
定义symb
类型为T
(Prefix | Postfix | Binary | Nary) 的新运算符符号,优先级prio
。该函数f
使用 new 运算符计算表达式。
给定运算符符号“++”,例如,使用评估函数f
,解析器会根据运算符的类型构建以下表达式,其中:
前缀:输入 ++x 结果为 f(x)。
后缀:输入 x++ 结果为 f(x)。
二进制:输入 x ++ y ++ z 结果为 f(f(x, y), z)。
Nary : 输入 x ++ y ++ z 结果为 f(x, y, z))。
在 matlab 的文档中查看更多信息。