Re: Could this be improved?

*To*: mathgroup at smc.vnet.net*Subject*: [mg21787] Re: Could this be improved?*From*: Paul Abbott <paul at physics.uwa.edu.au>*Date*: Thu, 27 Jan 2000 22:57:11 -0500 (EST)*Organization*: University of Western Australia*References*: <86mdpv$2f3@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Jordan Rosenthal wrote: > I wrote the following code which works correctly. I was wondering, however, > if there was a way of doing the same thing that had more of a Mathematica > approach. I am new to Mathematica and am still trying to get a grasp on how > to program effectively within the environment. > > myMtx[v_] := Module[ > {nCols, nRows, vPadded, c}, > nCols = Length[v]; > nRows = 2nCols - 1; > c = ZeroMatrix[nRows, nCols]; > vPadded = PadRight[v, nRows, 0]; > For[i = 1, i <= nCols, i++, > c[[All, i]] = vPadded; > vPadded = RotateRight[vPadded] > ]; > c > ] You also need the definition of ZeroMatrix. I think that the essential function you are after is NestList. The following code is slightly simpler: NewMtx[v_] := Module[ {n = Length[v]}, NestList[RotateRight, Reverse[PadRight[PadLeft[v, 2n-1], 3n-2]], 2n-2][[All, Range[2n-1, 3n-2]]] ] Cheers, Paul