Re: Is a For loop always a no-no?
- To: mathgroup at smc.vnet.net
- Subject: [mg50333] Re: Is a For loop always a no-no?
- From: Bill Rowe <readnewsciv at earthlink.net>
- Date: Fri, 27 Aug 2004 02:57:56 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
On 8/26/04 at 6:51 AM, rob at pio-vere.com (1.156) 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];
From this last, it looks to me like you are looking for the difference between subsequent elements of the list. If so, ListConvolve[{1,-1},list] will do what you want, i.e.,
y = Table[Subscript[x, n], {n, 5}];
Drop[RotateLeft[y] - y, -1] == ListConvolve[{1, -1}, y]
True
So, for a matrix where you want to do this for each row simply Map ListConvolve to each row, i.e.,
ListConvolve[{1,-1},#]&/@y
where y is the matrix
--
To reply via email subtract one hundred and four