我想要乘以两个矩阵。 A * B工作正常。但我真正想要的是A.t * B.但是在转置A后,结果变为Transpose [Matrix [Double]]而不是Matrix [Double]。结果,编译器拒绝该操作。然而,在数学上,矩阵的转置是另一个矩阵,将它乘以另一个矩阵应该是完全可以的。如何在微风中正确完成?
答案 0 :(得分:1)
在Breeze中使用纯矩阵类型时,我遇到了类似的问题,例如:
def buildMatrix(): Matrix[Double] = {
DenseMatrix((1.0, 2.0, 3.0), (4.0, 5.0, 6.0))
}
val m = buildMatrix()
val t = m.t
m * t
给我编译器错误Error:(13, 69) could not find implicit value for parameter op: breeze.linalg.operators.OpMulMatrix.Impl2[breeze.linalg.Matrix[Double],breeze.linalg.Transpose[breeze.linalg.Matrix[Double]],That]
但是,如果我确定要转置的矩阵是DenseMatrix,如下所示:
val m = buildMatrix().toDenseMatrix
然后*
运算符可以正常工作。
答案 1 :(得分:0)
A.t.asInstanceOf [DenseMatrix [Double]]成功了。