Re: making a block diagonal matrix
- To: mathgroup at smc.vnet.net
- Subject: [mg37575] Re: making a block diagonal matrix
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Tue, 5 Nov 2002 05:01:21 -0500 (EST)
- References: <aq598m$sdj$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
David,
DiagonalMatrixSq[sms_]:=
Module[{p=0},
Join@@(PadRight[#,{Length[#],Plus@@Length/@sms},
0,{0,(p+=Length[#])-Length[#]}]&/@sms)
]
Test:
sms= {{{a,b},{c,d}},{{e,f,g},{h,i,j},{k,l,m}},{{z}}};
DiagonalMatrixSq[sms]
{{a,b,0,0,0,0},
{c,d,0,0,0,0},
{0,0,e,f,g,0},
{0,0,h,i,j, 0},
{0,0,k,l,m,0},
{0,0,0,0,0,z}}
--
Allan
---------------------
Allan Hayes
Mathematica Training and Consulting
Leicester UK
www.haystack.demon.co.uk
hay at haystack.demon.co.uk
Voice: +44 (0)116 271 4198
Fax: +44 (0)870 164 0565
"David E. Burmaster" <deb at alceon.com> wrote in message
news:aq598m$sdj$1 at smc.vnet.net...
> Dear MathGroup
>
> Can anyone please suggest an efficient way to convert a list of square
> matrices (of different dimensions) into a block diagonal matrix?? The
> elements of each matrix are all real numbers
>
> here is an example with a list of two square matrices --
>
> matrix1 = a b
> c d
>
> matrix2 = e f g
> h i j
> k l m
>
>
> output = a b 0 0 0
> c d 0 0 0
> 0 0 e f g
> 0 0 h i j
> 0 0 k l m
>
>
>
> =-=
>
> many thanks
> dave
>
>
>
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> David E. Burmaster, Ph.D.
> Alceon Corporation
> POBox 382069 (new Box number effective 1 Sep 2001)
> Harvard Square Station
> Cambridge, MA 02238-2069 (new ZIP code effective 1 Sep 2001)
>
> Voice 617-864-4300
>
> Web http://www.Alceon.com
> Email deb at Alceon.com
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
>
>