我希望能够在Mathematica中为矩阵乘法重载
有没有简单的方法可以做到这一点,而不必重新编写自己的矩阵乘法?
谢谢。
Times
和Plus
。例如,让Times
成为BitAnd
,让Plus
成为BitOr
,然后进行矩阵乘法。有没有简单的方法可以做到这一点,而不必重新编写自己的矩阵乘法?
谢谢。
Times
和Plus
。例如,让Times
成为BitAnd
,让Plus
成为BitOr
,然后进行矩阵乘法。Times
和 Plus
的行为,还是 Dot
。通常情况下,Block
技巧是最简单的方法。在这种情况下,由于 Dot
没有调用高级的 Plus
或者 Times
,所以你可以这样做: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
或Times
。
Times
将破坏任何期望矩阵上的Times
的标准行为的 Mathematica 函数。更安全的替代方法是定义MyTimes
并使用符号说明包来赋予它自己的外观和快捷方式。 - Yaroslav Bulatov