这似乎是一个愚蠢的问题,但在看了一下之后我无法弄清楚这一点,所以我会问这里。
如何在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))
答案 0 :(得分:9)
*
矩阵运算符是逐元素乘法 - 也就是说,它强制两个操作数具有相同的维度并生成一个新矩阵,其中结果中每个位置的元素是元素的乘积在操作数的那个位置。
我认为您正在寻找mmul
的{{1}}功能。