Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

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

Search the Archive

Re: Matrix construction

  • To: mathgroup at smc.vnet.net
  • Subject: [mg101120] Re: [mg101059] Matrix construction
  • From: Leonid Shifrin <lshifr at gmail.com>
  • Date: Wed, 24 Jun 2009 06:35:06 -0400 (EDT)
  • References: <200906231103.HAA08024@smc.vnet.net>

Hi,

joining, for instance,

{{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}, {{9, 10}, {11, 12}}, {{13,
   14}, {15, 16}}}

we have to get

{{1, 2, 5, 6}, {3, 4, 7, 8}, {9, 10, 13, 14}, {11, 12, 15, 16}}

A possible solution:

In[1] =
joinBlocks[matrixOfMatrices_?(MatrixQ[#,MatrixQ]&)] :=
  Flatten[Map[ Join @@@ Transpose[#] &, matrixOfMatrices], 1];

For example,

{{{{1,2},{3,4}},{{5,6},{7,8}}},{{{9,10},{11,12}},{{13,14},{15,16}}}}//MatrixForm

(output suppressed),

In[2]=
 joinBlocks[{{{{1,2},{3,4}},{{5,6},{7,8}}},{{{9,10},{11,12}},{{13,14},{15,16}}}}]


Out[2]=
{{1,2,5,6},{3,4,7,8},{9,10,13,14},{11,12,15,16}}

This works on more general matrices as well. For example, on

Fold[Partition, Range[48], {2, 2, 3}] // MatrixForm

(output suppressed)

In[3] =  joinBlocks[Fold[Partition, Range[48], {2, 2, 3}]]

Out[3] = {{1, 2, 5, 6, 9, 10}, {3, 4, 7, 8, 11, 12}, {13, 14, 17, 18, 21,
  22}, {15, 16, 19, 20, 23, 24}, {25, 26, 29, 30, 33, 34}, {27, 28,
  31, 32, 35, 36}, {37, 38, 41, 42, 45, 46}, {39, 40, 43, 44, 47, 48}}


Hope this helps.


Regards,
Leonid


On Tue, Jun 23, 2009 at 4:03 AM, Haibo Min <yshdfeng at gmail.com> wrote:

> Hi, everyone.
> I know that matrix can be constructed via Table or Array, but I want to
> construct a matrix from other matrices, how to do it?
> For example, suppose I would like to construct a matrix M which is composed
> of four matrices, A,B,C,D.  The element corresponding to the first row and
> the first column is A, the first row and second column is B...
> I used the M={{A,B},{C,D}} and M={A,B,C,D}, but both of them didn't  work.
> How?
> Thanks for advance.
>
> Best Regards,
> Haibo
>
>
>



  • Prev by Date: Re: Ansatz?
  • Next by Date: Re: FindInstance over Integers
  • Previous by thread: Matrix construction
  • Next by thread: Re: Matrix construction