Not at all familiar with this, but I played with the Matrices H2n in
the wiki
article, and found they reproduce these results, subject to reordering.
So, fwiw, here are a few verbs:
(I assume the argument size is a power (> 0) of 2; no checking!)
kp =: *&$ ($,) 0 2 1 3 |: */ NB. Kronecker product from J Wiki
H2n =: 3 : 0 NB. H2n as defined in Wiki
n =. y
h =. 1 1,:1 _1
n2=. 2
for_i. i. <: 2 <.@^. n do.
h =. (h kp ,:1 1) , (=i. n2) kp ,: 1 _1
n2=. +:n2
end.
h
)
H2na =: 3 : 0 NB. H2n reordered to match Raul's Haar verb
i =. i. n =. y
I =. ''
while. 1 < n =. -: n do.NB. build map from Wiki H2n to required order
i =. (-n) <\ i
I =. I, ;{: i
i =. ;}: i
end.
(I, |. i) { H2n y
)
applyHaar =: H2na@# +/ . * ] NB. do matrix product
Haar 3 2 3 2 2 2 1 1 NB. Raul's verb
1 1 0 0 0 2 4 16
applyHaar 3 2 3 2 2 2 1 1 NB. verb using H2n matrix
1 1 0 0 0 2 4 16
Might help a bit!
Mike
On 07/01/2018 17:41, Raul Miller wrote:
https://en.wikipedia.org/wiki/Haar_wavelet
https://pbs.twimg.com/media/DS7mmaLWAAE6-US.jpg
Haar=: _2&(-/\ , Haar^:(1<#)@(+/\))
Haar 3 2 3 2 2 2 1 1
1 1 0 0 0 2 4 16
Like the fast fourier transform, this is only defined on arguments
whose length is a power of 2 (which might be enforced by requiring an
array whose dimensions are all 2 and then raveling it).
Unlike the FFT, however, the Haar transform is not self inverting.
Still, since every non-lossey transform deserves an inverse transform:
iHaar=: -:@(+/,@,.-~/)@(,:$:^:(1<#))/@($~ 2,-:@#)
iHaar 1 1 0 0 0 2 4 16
3 2 3 2 2 2 1 1
As an aside, though: I found the wikipedia article nearly useless for
this implementation - I used the example contained in the image to
write this code and only briefly skimmed the wikipedia text for rough
agreement. (And since I've encountered plenty of errors in wikipedia
in the past, that's all I'm inclined to do with that page at the
moment.) Still, if someone with more familiarity with wavelets than I
could tell me if I've screwed up royally (and, if so, how and where),
please let me know.
Thanks,
---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm