2017-02-24 2 views
0

J'essaie de voir un moyen efficace d'obtenir ce résultat dans Scala.Scala comment multiplier un RowMatrix et BDM

  1. J'ai un RowMatrix et un BDM
  2. Je voudrais crete une multiplication de fonction (multiplication matricielle)
  3. Mon approche est d'obtenir la rangée de RowMatrix A et ensuite convertir en Matrix puis Multipliez avec B

J'essaye d'obtenir le type à Matrix mais je suis perdu.

A.rows.map{case (X) => convertToMatrix(X) * B } 

Y at-il une fonction où je peux appeler pour convertir la ligne que j'ai obtenu de A à une matrice ?? Deuxièmement puis-je le multiplier avec B directement pour obtenir A.multiply(B)?

Je suis en train de multiplier la ligne de A à B la matrice mais je reçois cette erreur:

scala> A.rows.map{case (v) => toBreezeVector(v).multiply(B)} 
<console>:41: error: value multiply is not a member of breeze.linalg.Vector[Double] 

Répondre

0

Scala a une bonne bibliothèque appelée ScalaNLP qui fournit DenseMatrix (Il n'est pas BreezeDenseMatrix) classe pour les opérations matricielles. ScalaNLP peut utiliser des réalisations natives BLAS pour effectuer une multiplication matricielle. C'est vraiment rapide.

+0

J'ai décidé de simplement convertir le BDM en une matrice en utilisant la brise et d'utiliser la méthode de multiplication de la matrice –