So vektorisieren Sie die zeilenweise Diagonalisierung einer Matrix

Ich habe eine n-mal-m-Matrix, die ich in eine m-mal-m-Matrix umwandeln möchte, wobei jeder m-mal-m-Block des Ergebnisses die Diagonale jeder Zeile enthält.

Zum Beispiel, wenn die Eingabe ist:

[1 2; 3 4; 5 6]

Die Ausgabe sollte sein:

[1 0; 0 2; 3 0; 0 4; 5 0; 0 6]

Natürlich möchte ich die Matrix nicht selbst Schritt für Schritt mit a zusammenbauenfor Schleife.
Gibt es einen vektorisierten und einfachen Weg, um dies zu erreichen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage