6

这似乎是一个愚蠢的问题,但经过一番环顾后我无法弄清楚,所以我会在这里问。

如何将 3x2 矩阵乘以 core.matrix 中的 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)

提前致谢。

ps 我的命名空间看起来就像 core.matrix 中的示例

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

1 回答 1

9

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

我认为您正在寻找mmul.clojure.core.matrix

于 2013-11-14T17:03:09.903 回答