MathGroup Archive 2000

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

Search the Archive

Re: Could this be improved?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg21760] Re: [mg21741] Could this be improved?
  • From: Rob Pratt <rpratt at email.unc.edu>
  • Date: Thu, 27 Jan 2000 22:56:41 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

The following uses only Mathematica 3.0 code and is shorter.

myMtx2[v_]:=
  Transpose[
    Table[RotateRight[vPadded = Join[v, Table[0, {Length[v] - 1}]], i],
	{i, 0, Length[v] - 1}]]

A step towards "a more Mathematica approach" is to remove For and Do
loops.

Rob Pratt
Department of Operations Research
The University of North Carolina at Chapel Hill

rpratt at email.unc.edu

http://www.unc.edu/~rpratt/

On Wed, 26 Jan 2000, Jordan Rosenthal wrote:

> Hi all,
> 
> 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
>     ]
> 
> For example, myMtx[{1,2,3}] takes the vector {1,2,3} and turns it into the
> matrix {{1, 0, 0}, {2, 1, 0}, {3, 2, 1}, {0, 3, 2}, {0, 0, 3}} which looks
> like
> 
> [ 1 0 0 ]
> [ 2 1 0 ]
> [ 3 2 1 ]
> [ 0 3 2 ]
> [ 0 0 3 ]
> 
> 
> Thanks,
> 
> Jordan



  • Prev by Date: Re: Making a function dynamically define another conditional function...
  • Next by Date: Re: Could this be improved?
  • Previous by thread: Re: Could this be improved?
  • Next by thread: Re: Could this be improved?