Re: VectorToMatrix
- To: mathgroup at smc.vnet.net
- Subject: [mg4339] Re: VectorToMatrix
- From: dmourati at uiuc.edu (Demetri Mouratis)
- Date: Thu, 11 Jul 1996 00:58:57 -0400
- Organization: University of Illinois at Urbana
- Sender: owner-wri-mathgroup at wolfram.com
In article <4qqn5d$49m at dragonfly.wolfram.com>, Robert Pratt
<rpratt at math.unc.edu> wrote:
> I want to define a function VectorToMatrix[list_, n_] that behaves as
> follows:
>
> VectorToMatrix[{a,b,c,d,e,f,g,h,i,j}, 4]//MatrixForm
>
> 0 a b c d
> 0 0 e f g
> 0 0 0 h i
> 0 0 0 0 j
>
> Now n can be determined from Length[list], which will always be equal to
> n choose 2 for some n. But I would rather input n to save that
> computation. (I will be doing this for a lot of vectors.)
>
> Any ideas?
>
> Rob Pratt
> Department of Mathematics
> The University of North Carolina at Chapel Hill
> CB# 3250, 331 Phillips Hall
> Chapel Hill, NC 27599-3250
>
> rpratt at math.unc.edu
How about this:
In[1]:=
Clear[VectorToMatrix]
VectorToMatrix[list_,n_,step_:1,outlist_:{}]:=
Module[{wlist,newlist},
wlist=Table[{1,i},{i,n,1,-1}];
newlist=Append[outlist,
Flatten[
List[Table[0,{step}],
Take[list,wlist[[step]]] ]]];
If[step==n,
newlist,
VectorToMatrix[
Drop[list,wlist[[step]]],
n,
step+1,
newlist]]
];
In[3]:=
Clear[n]
n=4;
l=Table[FromCharacterCode[97+i],{i,0,n^2/2+n/2-1}];
MatrixForm[VectorToMatrix[l,n]]
Out[6]//MatrixForm=
0 a b c d
0 0 e f g
0 0 0 h i
0 0 0 0 j
In[7]:=
Clear[n]
n=6;
l=Table[FromCharacterCode[97+i],{i,0,n^2/2+n/2-1}];
MatrixForm[VectorToMatrix[l,n]]
Out[10]//MatrixForm=
0 a b c d e f
0 0 g h i j k
0 0 0 l m n o
0 0 0 0 p q r
0 0 0 0 0 s t
0 0 0 0 0 0 u
-------------------------------------------------------------------
Demetri Mouratis
dmourati at uiuc.edu
http://www.wolfram.com/~demetrim/
==== [MESSAGE SEPARATOR] ====