2016-05-27 12 views
0

Ich habe eine Matrix S (n x m) und einen Vektor Sigma (n), und ich möchte jede Zeile S (i) mit Sigma (i) multiplizieren.Intel MKL und Zeilenmultiplikation

Ich habe von 3 Dinge gedacht: -> Sigma Umwandlung in eine quadratische Diagonalmatrix und S = Sigma * S berechnen, aber es scheint, dass die Funktionen existieren nur für die allgemeine oder Dreiecksmatrix ... -> jede Zeile Multiplizieren durch ein Skalar Sigma [i] mit einem DSCAL, in einer Schleife -> mkl_ddiamm, aber es scheint irgendwie unklar für mich.

Irgendwelche Ratschläge, wie ich das umsetzen sollte? Vielen Dank !

+0

Ihre Frage ist ähnlich [diese Frage] (http://stackoverflow.com/questions/29472362/how-to-perform-vector-matrix-multiplication-with-blas). –

+0

Hallo, Ich möchte immer noch die S-Matrix als Ausgabe haben, damit ich nicht einfach S und Sigma multiplizieren kann, oder irre ich mich? Formal möchte ich S mit einer diagonalen Matrix von Eigenwerten Sigma [0 ... n-1] multiplizieren. – user3821901

Antwort

2

Es ist eine sehr einfache Operation, dass MKL/BLAS keine Funktion dafür bietet. Sie könnten es selbst mit for-Schleifen implementieren.

for(int i=0; i<nrow; ++i) { 
    for(int j=0; j<ncols; ++j) { 
    s[i][j] += sigma[i]; 
    } 
}