Como vectorizar a diagonalização em linha de uma matriz

Eu tenho uma matriz n-por-m que eu quero converter em uma matriz de mn por m, com cada bloco m-by-m do resultado contendo a diagonal de cada linha.

Por exemplo, se a entrada for:

[1 2; 3 4; 5 6]

a saída deve ser:

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

Claro, eu não quero montar a matriz passo a passo eu mesmo com umfor loop.
Existe uma maneira vetorizada e simples de conseguir isso?