Blockdiagonalmatrix

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
götze1988
User
Beiträge: 13
Registriert: Samstag 6. August 2016, 13:02

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
BlackJack

Ungetestet:

Code: Alles auswählen

H = block_diag(*([T] * (P - 1)))
götze1988
User
Beiträge: 13
Registriert: Samstag 6. August 2016, 13:02

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
götze1988
User
Beiträge: 13
Registriert: Samstag 6. August 2016, 13:02

Ok, habs selber gelöst mit
H = sparse.block_diag(([T]*(P-1))).

Danke
Antworten