Seite 1 von 1

Blockdiagonalmatrix

Verfasst: Freitag 26. August 2016, 14:45
von götze1988
Hi,

ich würde gerne eine Blockdiagonalmatrix H (Dimension (P-1)*(N-1)x(P-1)*(N-1)) bauen , die P-1 mal den Matrixblock T (Dimension (N-1)x(N-1)) auf der "diagonalen" enthält,d.h

H=block_diag(T,...,T) (P-1 mal).

Jetzt könnte ich mir diese Matrix auch mit ner Schleife bauen, aber würde es lieber effizienter mit dem block_diag Befehl machen. Weiss jemand, wie ich die Matrix T P-1 mal in die Klammer befinde, kann man das irgendwie mit ner Schleife in der Klammer lösen vllt?

Lg und Viele Grüße

Re: Blockdiagonalmatrix

Verfasst: Freitag 26. August 2016, 15:07
von BlackJack
Ungetestet:

Code: Alles auswählen

H = block_diag(*([T] * (P - 1)))

Re: Blockdiagonalmatrix

Verfasst: Freitag 26. August 2016, 16:11
von götze1988
Hi,

danke schonmal. Ich habe das jetzt so probiert, aber bekomme nen memory error, da die dimension zu hoch ist. Hab dann probiert ne sparse matrix zu machen , also

H = sparse.block_diag(*([T] * (P - 1)))


dann bekomme ich jedoch den fehler "block_diag() takes at most 3 arguments". Jedoch ist T doch als Liste aufgeführt, deswegen verstehe ich den Fehler nicht..

Lg

Re: Blockdiagonalmatrix

Verfasst: Freitag 26. August 2016, 16:13
von götze1988
Ok, habs selber gelöst mit
H = sparse.block_diag(([T]*(P-1))).

Danke