如何在Mathematica中使Times和Plus超载矩阵乘法

时间:2011-03-09 21:09:03

标签: wolfram-mathematica

我希望在mathematica中重载TimesPlus进行矩阵乘法,例如,让TimesBitAnd,加号为BitOr,然后做矩阵乘法。

有没有以简单的方式做到这一点,而不重写我自己的矩阵乘法?

感谢。

1 个答案:

答案 0 :(得分:4)

问题是您想要改变的内容 - TimesPlusDot的行为。通常,Block技巧通常是最简单的方法。在这种情况下,由于Dot不会调用高级PlusTimes,您可以这样做:

mat1 = {{1,2},{3,4}};
mat2= {{5,6},{7,8}};
Block[{Dot = Inner[BitAnd,#1,#2,BitOr]&},
  mat1.mat2]

{{3,0},{5,2}}

但请注意,这有效地重新实现了矩阵乘法(使用Inner) - 自Dot内部实现并且不使用Plus或{{ 1}}。