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