On Mon, Nov 16, 2009 at 9:29 AM, Richard Kubina <[email protected]> wrote:
> Hi, first time poster, new J user.
> I cannot figure out how to do a certain sorta algorithm in J without a for
> loop.
Of course, J has for loops for a reason.
> I have an array of data:
> a1=: 10 7 8 3 5
> and the other to be calculated iteratively, except for the first value which
> is already known.
> a2=: 6
>
> So I need to take the 6 and pair it with 10, do some calculations append the
> new number to the end of a2.
> I used this function to do this
>
> GetEWMAData =: monad : 'for_x. }.SubGroupedData do. EWMAData=:EWMAData,
> (lambda*x)+((1-lambda)*({:EWMAData)) end.'
>
> where lambda is 0.2, SubGroupedData is a1 here and EWMAData is a2, getting
> updated by appending the new number to the end of the list.
However, I think this would be simpler to read if it was a dyad which
used x and y for its arguments:
GetEWMAData=: adverb define
:
for_Y. }.y do.
x=.x, (m*Y) + (1-m)*{:x
end.
)
a2 0.2 GetEWMAData a1
6 6.2 6.56 5.848 5.6784
However, I when I was writing this, Matthew Brand sent a message
which looks relevant. So I will stop here, for now.
--
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm