Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

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

Search the Archive

Re: Is a For loop always a no-no?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg50327] Re: [mg50312] Is a For loop always a no-no?
  • From: DrBob <drbob at bigfoot.com>
  • Date: Fri, 27 Aug 2004 02:57:49 -0400 (EDT)
  • References: <200408261051.GAA16390@smc.vnet.net>
  • Reply-to: drbob at bigfoot.com
  • Sender: owner-wri-mathgroup at wolfram.com

I gather that each yd[[i]] is a vector? You're rotating that vector, subtracting the original vector, and then dropping the last element? If so, here's an example with seven 3-vectors:

g=Most[RotateLeft@#-#]&;
f=g/@#&;
yd=Array[x,{7,3}]

{{x[1,1],x[1,2],x[1,3]},{x[2,1],x[2,2],x[2,3]},{
   x[3,1],x[3,2],x[3,3]},{x[4,1],x[4,2],x[4,3]},{
   x[5,1],x[5,2],x[5,3]},{x[6,1],x[6,2],x[6,3]},{x[7,1],x[7,2],x[7,3]}}

yd=f@yd

{{-x[1,1]+x[1,2],-x[1,2]+x[1,3]},{-x[2,1]+x[2,2],-
       x[2,2]+x[2,3]},{-x[3,1]+x[3,2],-x[3,2]+x[3,3]},{-x[4,1]+x[4,2],-
       x[4,2]+x[4,3]},{-x[5,1]+x[5,2],-x[5,2]+x[5,3]},{-x[6,1]+x[6,2],-
       x[6,2]+x[6,3]},{-x[7,1]+x[7,2],-x[7,2]+x[7,3]}}

yd=f@yd

{{x[1,1]-2 x[1,2]+x[1,3]},{x[2,1]-2 x[2,2]+x[2,3]},{
   x[3,1]-2 x[3,2]+x[3,3]},{x[4,1]-2 x[4,2]+x[4,3]},{
   x[5,1]-2 x[5,2]+x[5,3]},{x[6,1]-2 x[6,2]+x[6,3]},{x[7,1]-2 x[7,2]+x[7,3]}}

yd=f@yd

{{},{},{},{},{},{},{}}

Most is the same as the Drop you used; it's new in version 5.

Bobby

On Thu, 26 Aug 2004 06:51:10 -0400 (EDT), 1.156 <rob at pio-vere.com> wrote:

> I realize that many times some form of Mathematica built in array function will
> do the needed job.  Here I have a matrix containing individual data
> traces in rows y[[i]]. I want to make matrix containing the corresponding
> derivative signals in rows yd[[i]].  I get this done using the following
> For loop. Matrix yd has been initialized (it wouldn't work with out it).
>
> For[i = 1, i < n, i++, yd[[i]] = Drop[RotateLeft[y[[i]]] - y[[i]], -1]];
>
> I tried the obvious (to me):
> yd = Drop[RotateLeft[y] -y, -1];
>
> But I get garbage.  It seems the whole matrix has been flattened to a
> single list and the whole list is rotated --instead of doing it row
> by row as I need.
>
> Wizzards all: is there some slick way to do this without the For loop?
> If so, it's probably faster and sure would look better in the code.
> Suggestions appreciated as usual.
>
> Rob
>
>
>



-- 
DrBob at bigfoot.com
www.eclecticdreams.net


  • Prev by Date: Re: Re: Publicon problems converting sample document to LaTeX
  • Next by Date: Re: Is a For loop always a no-no?
  • Previous by thread: Is a For loop always a no-no?
  • Next by thread: Re: Is a For loop always a no-no?