The following runs 2-3x faster on my Mac G5 with longer arguments (ie 2^23). How does this compare with numpy on your machine?

d4 =: 3 : 0

C1 =.  1.7320508075688772
C2 =.  0.4330127018922193
C3 =. -0.066987298107780702
C4 =.  0.51763809020504137
C5 =.  1.9318516525781364

ev =. I.(#y)$1 0
od =. >:ev
even =. ev{y
odd =. od{y

d1 =. odd-C1*even
s1 =. even+(C2*d1)+C3*1|.d1
d2 =. C4*d1+_1|.s1
s1 =. C5*s1

if.2<#y do.
s1 =. d4 s1
end.

r =. d2 od } s1 ev } y
)



On 24-Dec-06, at 8:19 PM, Xu Zuoqian wrote:

D4_Transform=:3 :0
NB. D4 Wavelet transform in Matlab
NB. (C) Sturla Molden
C1 =.  1.7320508075688772
C2 =.  0.4330127018922193
C3 =. -0.066987298107780702
C4 =.  0.51763809020504137
C5 =.  1.9318516525781364
n=.>.-:#y

r =. (#y)$0
evenkey=.2*i.n
oddkey=.<<<evenkey
odd =.oddkey{y
even =.evenkey{y

d1 =. odd - C1*even
s1 =.even+(C2*d1)+C3*1|.d1
d2=.d1+_1|.s1
r=.(C5*s1)evenkey}r
r=.(C4*d2)oddkey}r

if.2<#y do.
        r=.(D4_Transform evenkey{r) evenkey}r
end.
r
)

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to