2017-10-23 3 views
0

ich einig Bayes-Analyse unter Verwendung Stan tun und ich versuche, meinen Code effizienter zu machen.Umwandlung Effizientes nxj Matrix in eine N-langer Reihe mit J Zahlen

In meinem Stan Modell String habe ich eine Variable, die eine nxj Matrix ist. Es ist auf diese Weise deklariert, um schnelle Matrixoperationen und Zuweisungen zu verwenden.

Im letzten Modellierungsschritt (Zuweisung einer Verteilung) muss ich jedoch diese NxJ-Matrix in ein N-langes Array transformieren, das in jedem der Elemente des Arrays J reale Werte enthält.

Mit anderen Worten, ich mag die folgende Transformation:

matrix[N,J] x; 
vector[J] y[N]; 

for (i in 1:N) 
    for (j in 1:J) 
     y[i][j] = x[i,j] 

Gibt es eine Möglichkeit, dies in einer vektorisierten Weise zu tun, ohne Schleifen?

Vielen Dank !!!!

+0

Sie möchten wahrscheinlich in den Stan Foren fragen: http://discourse.mc-stan.org/ – jaradniemi

+0

Fühlen Sie sich frei, hier oder in unseren Foren zu fragen --- bitte bitte nicht auf beiden Fragen. –

Antwort

1

Nein Loops sind in Stan sehr schnell. Der einzige Grund für die Geschwindigkeitsbegrenzung ist, ob es Derivate gibt. Sie könnten es ein wenig zu

verkürzen, aber es wäre nicht effizienter.

ich soll diese qualifizieren, indem er sagt, dass es hier eine Ineffizienz ist, der Mangel an Speicherlokalizität ist. Wenn die Matrizen groß sind, werden sie nur langsam nach Zeilen durchquert, da sie intern in der Spaltenmajor gespeichert sind.

+0

Danke für die Klarstellung !!! =) –

Verwandte Themen