2016-12-04 61 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]]'。 –