core.matrix中的矩阵乘法

时间:2013-11-14 16:04:22

标签: matrix clojure

这似乎是一个愚蠢的问题,但在看了一下之后我无法弄清楚这一点,所以我会问这里。

如何在core.matrix中将3x2矩阵乘以2x3矩阵?我必须误解一些非常基本的东西。天真地,我期待这个工作,我认为core.matrix会为我做基础数学。

(* (matrix [[1 0 -2] 
            [0 3 -1]]) 
   (matrix [[0   3] 
            [-2 -1] 
            [0   4]]))

我通过首次点击谷歌搜索http://www.purplemath.com/modules/mtrxmult.htm找到了这个例子,预期结果是

[[ 0 -5]
 [-6 -7]]

相反,我得到:

RuntimeException Incompatible shapes, cannot broadcast [3 2] to [2 3] 
clojure.core.matrix.impl.persistent-vector/eval5013/fn--5014 
(persistent_vector.clj:152)

提前致谢。

P.S。我的命名空间看起来就像core.matrix

中的示例
(ns xyz
  (:refer-clojure :exclude [* - + == /]) ; get from core.matrix
  (:use clojure.core.matrix)
  (:use clojure.core.matrix.operators)
  (:gen-class))

1 个答案:

答案 0 :(得分:9)

*矩阵运算符是逐元素乘法 - 也就是说,它强制两个操作数具有相同的维度并生成一个新矩阵,其中结果中每个位置的元素是元素的乘积在操作数的那个位置。

我认为您正在寻找mmul的{​​{1}}功能。