2

我想知道是否可以在 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

有可能实现这样的事情吗?如果是这样,我该怎么做?

4

1 回答 1

5

[取自我之前的回答]

尝试使用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 的文档中查看更多信息。

于 2013-11-08T22:51:35.677 回答