使用Jblas进行矩阵乘法:矩阵需要具有相同的长度

时间:2015-05-29 16:59:04

标签: java matrix octave matrix-multiplication blas

我正在使用Java + Jblas(第一次使用者),我正在尝试将两个矩阵相乘。一个是163x4,另一个是4x1矩阵。我希望这种乘法的结果是一个163x1矩阵。但是使用:

FloatMatrix a = b.mmuli(c);

我收到错误:

  

矩阵必须具有相同的长度(是:652和4)

现在我想,这对于我感到困惑的程序来说非常有意义。相同的乘法在Octave中运行良好(这当然适用于一些魔法)。但是现在为了让这个起作用,我需要知道这是什么样的巫术?

修改

所以这是Octave文档中关于广播(巫术)的内容:

  

如果所有尺寸相等,则不会发生广播和普通   逐个元素算术发生。对于更高的阵列   尺寸,如果尺寸的数量不相同,则丢失   尾随尺寸被视为1.当其中一个尺寸为1时,   具有该单例维度的数组将被复制   维度,直到它与另一个数组的维度匹配。

所以这意味着我只需要复制4x1矩阵163次。然后我可以执行乘法,但不是我想要的163x1矩阵,我现在有一个163x4矩阵。这对我来说很奇怪。我现在的解决方案是什么?

1 个答案:

答案 0 :(得分:2)

所以我终于明白了。这是其中一个错误......它必须是

FloatMatrix a = b.mmul(c);

元素明智的乘法是这里的错误。