Re: Constructing matrix out of submatrices

• To: mathgroup at smc.vnet.net
• Subject: [mg113789] Re: Constructing matrix out of submatrices
• From: Bill Rowe <readnews at sbcglobal.net>
• Date: Sat, 13 Nov 2010 00:57:56 -0500 (EST)

```On 11/12/10 at 5:26 AM, sschmitt at physi.uni-heidelberg.de (Sebastian
Schmitt) wrote:

>I would like to construct a matrix out of submatrices. I guess this
>is straight forward but somehow I couldn't find the correct way in
>the documentation. The example that follows is of course simplified.
>Please don't take shortcuts.

>I start with a zero matrix and a submatrix:

>matrix = ConstantArray[0, {3, 3}] submatrix = {{a, b}, {c, d}}

>I want to specificy the upper-left corner in the matrix where the
>submatrix should be placed. If the position is {1,1} the result
>should be:

>result = {{a, b, 0}, {c, d, 0}, {0, 0, 0}}

>If it is {1,2}:

>result = {{0, a, b}, {0, c, d}, {0, 0, 0}}

Here is a simple way to achieve your goal:

In[2]:= SparseArray[Band[{1, 1}] -> submatrix, {3, 3}] // Normal

Out[2]= {{a, b, 0}, {c, d, 0}, {0, 0, 0}}

In[3]:= SparseArray[Band[{1, 2}] -> submatrix, {3, 3}] // Normal

Out[3]= {{0, a, b}, {0, c, d}, {0, 0, 0}}

Here, I used Normal simply to show the goal was achieved. And
note, I am *constructing* the matrix from the submatrix rather
than *replacing* a portion of a larger matrix with the submatrix.

If I wanted the submatrix in the lower right corner of a 3 x 3
matrix, I could do it as follows:

In[4]:= PadLeft[#, 3] & /@ Join[{{0, 0, 0}}, submatrix]

Out[4]= {{0, 0, 0}, {0, a, b}, {0, c, d}}

or

In[5]:= ArrayFlatten[{{List /@ {0, 0, 0}, Join[{{0, 0}}, submatrix]}}]

Out[5]= {{0, 0, 0}, {0, a, b}, {0, c, d}}

```

• Prev by Date: Re: Constructing matrix out of submatrices
• Next by Date: Re: shooting method, boundary value problem
• Previous by thread: Re: Constructing matrix out of submatrices
• Next by thread: Re: Constructing matrix out of submatrices