MathGroup Archive 2000

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

Search the Archive

Re: Rearranging a tensor

  • To: mathgroup at smc.vnet.net
  • Subject: [mg22448] Re: [mg22433] Rearranging a tensor
  • From: Andrzej Kozlowski <andrzej at tuins.ac.jp>
  • Date: Sat, 4 Mar 2000 02:26:23 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

I can't think of a *really simple* way. But if yoou load in the package

<< LinearAlgebra`MatrixManipulation`

you can define something like:


In[3]:=
transform1[l_] := 
  Module[{s = Dimensions[l]},
    Transpose[
      Apply[AppendColumns,
        Table[Apply[AppendRows, Table[l[[i, j]], {i, 1, s[[1]]}]], {j, 1,
            s[[2]]}]]]]

then taking your definition of c we get:

In[10]:=
transform1[c] // MatrixForm
Out[10]//MatrixForm=
1   1   1   2   2   2

1   1   1   2   2   2

1   1   1   2   2   2

3   3   3   4   4   4

3   3   3   4   4   4

3   3   3   4   4   4


You can also do this without the package:

In[11]:=
transform2[l_] := 
  Module[{s = Dimensions[l]},
    Flatten[Map[Transpose,
        Partition[Partition[Flatten[l], Last[s]], s[[2]]*s[[-2]]]], 1]]


In[12]:=
transform2[c] // MatrixForm

Out[12]//MatrixForm=
1   1   1   2   2   2

1   1   1   2   2   2

1   1   1   2   2   2

3   3   3   4   4   4

3   3   3   4   4   4

3   3   3   4   4   4

One can generalize this to higher tensors but it soon gets complicated.

on 3/1/00 6:40 AM, DIAMOND Mark at noname at noname.com wrote:

> I have
> 
> In[1]:= a={{1,2},{3,4}};
> 
> In[2]:= b=Table[1,{3},{3}];
> 
> In[3]:= c=Outer[Times,a,b]
> 
> Out[3]= {{{{1, 1, 1}, {1, 1, 1}, {1, 1, 1}},
> 
>> {{2, 2, 2}, {2, 2, 2}, {2, 2, 2}}},
> 
>> {{{3, 3, 3}, {3, 3, 3}, {3, 3, 3}}, {{4, 4, 4}, {4, 4, 4}, {4, 4, 4}}}}
> 
> In[4]:= c//MatrixForm
> 
> Out[4]//MatrixForm=
> 1 1 1   2 2 2
> 1 1 1   2 2 2
> 1 1 1   2 2 2
> 
> 3 3 3   4 4 4
> 3 3 3   4 4 4
> 3 3 3   4 4 4
> 
> I would now like to rearrange c so that it is of the form
> {{1,1,1,2,2,2},{1,1,1,2,2,2},{1,1,1,2,2,2},{3,3,3,4,4,4},{ 3,3,3,4,4,4},{3,3
> ,3,4,4,4}}
> 
> There must be a *simple* way to do this but I cannot see it. Help would be
> appreciated.
> 
> Cheers,
> 
> Mark R Diamond
> Vision Research Laboratory
> The University of Western Australia
> no spam email: markd at psy dot uwa dot edu dot au
> 
> 
> 
> 

-- 




  • Prev by Date: Re: Rearranging a tensor
  • Next by Date: Re: Digitizing points in a graphic (amendment)
  • Previous by thread: Re: Rearranging a tensor
  • Next by thread: Re: Rearranging a tensor