Hi, Thanks for the help.

I did make anther typing error, in the definition of f.

I got the function EMAfun1 (below) from the forum and have compared
it's speed with scan.  "scan" is slightly faster. Do you think there
is a faster way to do EWMA in J using roughly the same amount of
memory for 1 million points?

Thanks,
Matthew.

ts=: 6!:2, 7!:[EMAIL PROTECTED]

scan =. 1 : '}.@(u~/\.&.|.)'
f =. 1 : '(((%m)*[) + (1-%m)*])'

EMAfun1 =. ((2 % [:>: #) $: ])  : (4 :'(((x * [) +  (-.x) * ])/\.)&.|. y')
EMA  =: EMAfun1"0 _ f. NB. don't know why can't do "0 _ in line above!

   ts '30 f scan i.1000000'
1.64804 1.61361e8

   ts '30 EMA i.1000000'
1.98128 1.61367e8


On Fri, Sep 26, 2008 at 10:52 PM, Henry Rich <[EMAIL PROTECTED]> wrote:
> Yeah.
>
> This is a linear filter and if you are evaluating arrays of them it
> might be faster in J to use array operations rather than multiplying
> it out term by term.
>
> Henry Rich
>
>> -----Original Message-----
>> From: [EMAIL PROTECTED]
>> [mailto:[EMAIL PROTECTED] On Behalf Of Devon
>> McCormick
>> Sent: Friday, September 26, 2008 5:44 PM
>> To: Programming forum
>> Subject: Re: [Jprogramming] scan operator
>>
>> Thanks, Henry.
>>
>> For
>>
>>    f =. 1 : '(((%m)*[) + (1-%m)*])'
>>
>> we get
>>
>>    3 ewma 5#1 4
>> 1 1 1 1 3 3.66667 3.88889 3.96296 3.98765
>>
>> which is more like it.
>>
>>
>> On Fri, Sep 26, 2008 at 5:09 PM, Henry Rich
>> <[EMAIL PROTECTED]> wrote:
>>
>> >
>> > f =. 1 : '(([%m) + (1-%m)*])'
>> >
>> > isn't right.
>> >
>> > f =. 1 : '(((%m)*[) + (1-%m)*])'
>> >
>> > Henry Rich
>> >
>> > > -----Original Message-----
>> > > From: [EMAIL PROTECTED]
>> > > [mailto:[EMAIL PROTECTED] On Behalf Of Devon
>> > > McCormick
>> > > Sent: Friday, September 26, 2008 5:04 PM
>> > > To: Programming forum
>> > > Subject: Re: [Jprogramming] scan operator
>> > >
>> > > Hi Matthew -
>> > >
>> > > are you sure this is correct?  When I apply "ewma" to "5#1
>> > > 4", I get this:
>> > >    3 ewma 5#1 4
>> > > 1 1 1 1 3 3 3 3 3
>> > >
>> > > I was under the impression that the terminal value should get
>> > > closer to 4,
>> > > not stick at 3.
>> > >
>> > > Regards,
>> > >
>> > > Devon
>> > >
>> > > On Fri, Sep 26, 2008 at 4:18 PM, Matthew Brand
>> > > <[EMAIL PROTECTED]>wrote:
>> > >
>> > > > This is a definition of EWMA using the scan adverb:
>> > > >
>> > > > NB. Scan for a parameterless function.
>> > > > scan =. 1 : '}.@(u~/\.&.|.)'
>> > > >
>> > > > NB. The EWMA weighting function must be defined as an adverb
>> > > > NB. to input the parameter:
>> > > > f =. 1 : '(([%m) + (1-%m)*])'
>> > > >
>> > > > ewma =. f scan
>> > > > 10 ewma i.10
>> > > >
>> > > > or,
>> > > > 10 f scan i.10
>> > > >
>> > > >
>> > > >
>> > > >
>> > > > On Fri, Sep 26, 2008 at 8:31 PM, Matthew Brand
>> > > <[EMAIL PROTECTED]
>> > > > >wrote:
>> > > >
>> > > > > Thanks, I see what you mean!!!
>> > > > >
>> > > > > ts=: 6!:2, 7!:[EMAIL PROTECTED]
>> > > > >
>> > > > >    ts '# - (1 : ''}.@(u~/\.&.|.)'') i.1000'
>> > > > > 0.000193176 17664
>> > > > >
>> > > > >    ts '# - (1 : ''}.@(u~/\&.|.)'') i.1000'
>> > > > > 0.130687 30208
>> > > > >
>> > > > > Also, \ does not give the right answer but \. does... I
>> > > might have done a
>> > > > > typing error.
>> > > > >
>> > > > >
>> > > > > On Fri, Sep 26, 2008 at 7:39 PM, Henry Rich
>> <[EMAIL PROTECTED]>
>> > > > wrote:
>> > > > >
>> > > > >> \. is faster than \ so use
>> > > > >>
>> > > > >>  scan =. 1 : '}.@(u~/\.&.|.)'
>> > > > >>
>> > > > >> Henry Rich
>> > > > >>
>> > > > >> > -----Original Message-----
>> > > > >> > From: [EMAIL PROTECTED]
>> > > > >> > [mailto:[EMAIL PROTECTED] On Behalf
>> > > Of Matthew Brand
>> > > > >> > Sent: Friday, September 26, 2008 2:33 PM
>> > > > >> > To: Programming forum
>> > > > >> > Subject: Re: [Jprogramming] scan operator
>> > > > >> >
>> > > > >> > Thanks for the pointers, here it is:
>> > > > >> >   scan =. 1 : '}.@: (((u~/)&.|.)\)'
>> > > > >> >    - scan >: i.5
>> > > > >> > _1 _4 _8 _13
>> > > > >> >    (1-2),((1-2)-3),(((1-2)-3)-4),((((1-2)-3)-4)-5)
>> > > > >> > _1 _4 _8 _13
>> > > > >> >
>> > > > >> > Does this seem like something there ought to be a primitive
>> > > > >> > for, I think
>> > > > >> > that q might have one? Anyway, it looks like it
>> works so far.
>> > > > >> > I want to use
>> > > > >> > it to do exponentially weighted moving average EWMA, which
>> > > > >> > was a topic on
>> > > > >> > the forum earlier in the year.
>> > > > >> >
>> > > > >> > Cheers,
>> > > > >> > Matthew.
>> > > > >> >
>> > > > >> > On Fri, Sep 26, 2008 at 5:07 PM, Devon McCormick
>> > > > >> > <[EMAIL PROTECTED]> wrote:
>> > > > >> >
>> > > > >> > > Hi Matthew - maybe this is what you want:
>> > > > >> > >
>> > > > >> > >   (1-2)-3
>> > > > >> > > _4
>> > > > >> > >   -~/|.1 2 3
>> > > > >> > > _4
>> > > > >> > >   ((1-2)-3)-4
>> > > > >> > > _8
>> > > > >> > >   -~/|.1 2 3 4
>> > > > >> > > _8
>> > > > >> > >
>> > > > >> > > so, you could do "f~/|."
>> > > > >> > >
>> > > > >> > > On Fri, Sep 26, 2008 at 11:44 AM, Matthew Brand
>> > > > >> > <[EMAIL PROTECTED]
>> > > > >> > > >wrote:
>> > > > >> > >
>> > > > >> > > > Hi All,
>> > > > >> > > >
>> > > > >> > > > If I have a dyadic function f, how can I do
>> the following:
>> > > > >> > > >
>> > > > >> > > > (((y0 f y1) f y2) f y3... ) f yn
>> > > > >> > > >
>> > > > >> > > > I want to feed the result of x f y into the next
>> > > > >> > evaluation as the left
>> > > > >> > > > parameter.
>> > > > >> > > >
>> > > > >> > > >
>> > > > >> > > > Thanks,
>> > > > >> > > > Matthew.
>> > > > >> > > >
>> > > > >> >
>> > >
>> ----------------------------------------------------------------------
>> > > > >> > > > For information about J forums see
>> > > > >> > http://www.jsoftware.com/forums.htm
>> > > > >> > > >
>> > > > >> > >
>> > > > >> > >
>> > > > >> > >
>> > > > >> > > --
>> > > > >> > > Devon McCormick, CFA
>> > > > >> > > ^me^ at acm.
>> > > > >> > > org is my
>> > > > >> > > preferred e-mail
>> > > > >> > >
>> > > > >> >
>> > >
>> ----------------------------------------------------------------------
>> > > > >> > > For information about J forums see
>> > > > >> > http://www.jsoftware.com/forums.htm
>> > > > >> > >
>> > > > >> >
>> > >
>> ----------------------------------------------------------------------
>> > > > >> > For information about J forums see
>> > > > >> > http://www.jsoftware.com/forums.htm
>> > > > >>
>> > > > >>
>> > >
>> ----------------------------------------------------------------------
>> > > > >> For information about J forums see
>> > > http://www.jsoftware.com/forums.htm
>> > > > >>
>> > > > >
>> > > > >
>> > > >
>> > >
>> ----------------------------------------------------------------------
>> > > > For information about J forums see
>> > > http://www.jsoftware.com/forums.htm
>> > > >
>> > >
>> > >
>> > >
>> > > --
>> > > Devon McCormick, CFA
>> > > ^me^ at acm.
>> > > org is my
>> > > preferred e-mail
>> > >
>> ----------------------------------------------------------------------
>> > > For information about J forums see
>> http://www.jsoftware.com/forums.htm
>> > >
>> >
>> >
>> ----------------------------------------------------------------------
>> > For information about J forums see
>> http://www.jsoftware.com/forums.htm
>> >
>>
>>
>>
>> --
>> Devon McCormick, CFA
>> ^me^ at acm.
>> org is my
>> preferred e-mail
>> ----------------------------------------------------------------------
>> For information about J forums see
>> http://www.jsoftware.com/forums.htm
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to