Services & Resources / Wolfram Forums / MathGroup Archive

MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

It would be nice to have DiagonalMatrix accept a matrix as building

  • To: mathgroup at
  • Subject: [mg113509] It would be nice to have DiagonalMatrix accept a matrix as building
  • From: "Nasser M. Abbasi" <nma at>
  • Date: Sun, 31 Oct 2010 04:18:48 -0500 (EST)
  • Reply-to: nma at

Sometime there is a need to make a matrix with repeating subblocks on 
the diagonal.  For example, one might want to create matrix A, with 
matrix B on its diagonal, repeated n times.

DiagonalMatrix only accepts vector (list), not matrix (list of lists), 
as its argument.

So, one has the option to use DiagonalMatrix, repeatedly, using 
different offsets at a time, and manually layout the diagonal. Or use 
SparseArray since SparseArray accepts a matrix as the band, but also 
make a loop to add the block at different locations on the diagonal.

The SparseArray method is little less work, but I think a nice solution 
would be to have the ability to specify the block, and how many time it 
needs to be repeated on the diagonal. That other 'system' has this 
command to do that.

This is how I now create a diagonalMatrix with matrices at its diagonal. 
Maybe an expert here knows of a short way or trick to use.

In this example, I wanted to make matrix 'a' with the submatrix


on its diagonal, and wanted this repeated 6 times. So, I made a large 
cup of coffee, sat down and wrote this



So, it works.

But if what I had imagined existed, I should have been able to do


Again, the above command would only work if 'block' was a 1-D list, not 
a 2-D list (ie. a matrix).

of course, I can make a function and hide the code I wrote inside this 
function, and it would just look the same as the call that I wanted.

All what I am saying is that Mathematica should support this feature as 
part of DiagonalMatrix as it is very common thing.


  • Prev by Date: how to plot nminimized result
  • Next by Date: Re: How does Plot* functions know about range?
  • Previous by thread: how to plot nminimized result
  • Next by thread: Re: It would be nice to have DiagonalMatrix accept a matrix as building