2016-12-04 30 views
0

我想乘以两个矩阵。 A * B工作得很好。但是我真正想要的是A.t * B.但是在转置A之后,结果变成了转置[Matrix [Double]]而不是Matrix [Double]。结果操作被编译器拒绝。然而,在数学上,矩阵的转置是另一个矩阵,应该完全可以将其乘以另一个矩阵。这是如何正确完成微风?scala微风通过转置乘法矩阵

回答

0

A.t.asInstanceOf [DenseMatrix [Double]]做到了。

+0

如果'A'的类型是'DenseMatrix [Double]',那么'A.t'也应该是'DenseMatrix [Double]'。所以如果你知道'A'的运行时类型为'DenseMatrix [Double]'(你显然是这样做的),那么你可以让'A'编译时间类型为'DenseMatix [Double]'。这将使你能够在没有演员的情况下执行'A.t * B'。 –

+0

A已经有类型DenseMatrix [双]。在铸造之前,我仍然有这个问题。 – bhomass

+0

它有*编译时*类型'DenseMatrix [双]'?我尝试了'At'(其中'A'具有编译时类型'DenseMatrix [Double]'),结果是另一个'DenseMatrix [Double]',而如果'A'具有编译时类型'Matrix [Double] ',然后'At'产生一个'Tranpose [Matrix [Double]]'。 –