Actually, I was thinking of moving on to other wavelets, Like, forinstance, the Hadamard transform, whose normalized matrix was
Kp=: (%%:2) * ,/@:(,./"3)@:(*/) H1=: 1 1,:1 _1 Hm=: H1&Kp@]^:[&(,.%:2) That said, I still haven't figured out a use for these things... Thanks, -- Raul On Mon, Jan 8, 2018 at 7:07 PM, 'Mike Day' via Programming <[email protected]> wrote: > Yes, the Wiki article does distinguish between unnormalised and normalised > > Haar matrices. The ordering is presumably a matter of taste. I don't > advocate > > any particular one! > > The Wiki article has (unnormalised) > > H2Wiki = 1 1,: 1 _1, > > H2nWiki = (HnWiki kp [1 1]), In kp [1 _1] > > whereas Raul Miller's (original) approach > > effectively had, again unnormalised > > H2miller = 1 _1,: 1 1 , > > H2nMiller = (In kp [1 _1]), HnMiller kp [1 1] > > (It's not clear whether H1 is defined.) > > Working with matrices renders normalisation quite straightforward: > > eg > > (% %:@(+/@:|)"1) @:H2n 4 NB. with Miller's ordering: > > 0.707107 _0.707107 0 0 > > 0 0 0.707107 _0.707107 > > 0.5 0.5 _0.5 _0.5 > > 0.5 0.5 0.5 0.5 > > > ... similar result to Raul's HaarM, except that his argumment is > > the log of n to base 2. > > > There's quite a famous poem, this side of the pond (no pun!), by Stevie > Smith, > > called "Not waving but Drowning" > > ... and it's bed-time. So agreed, perhaps that's enough of wavelets! > > > Cheers, > > > Mike > > > > > On 08/01/2018 19:08, Raul Miller wrote: >> >> Venturing further afield, it looks like normalizing means instead of using >> >> kp =: *&$ ($,) 0 2 1 3 |: */ >> >> use >> >> Kp =: (%%:2) * *&$ ($,) 0 2 1 3 |: */ >> >> Or, put differently, multiply the unnormalized result r by >> 2^(1-2^.#r)%2 or (same numbers) by -@-:@<:&.(2&^.) #r or (again, same >> numbers) 0.5 _0.5&p.&.(2&^.) #r >> >> Or, in other words, values from the sequence %:1 2 4 8 16 32 ... with >> 1 being used for 2 by 2 arrays. This suggests that the order 0 Harr >> matrix should be ,.%:0.5 >> >> People mostly ignore this, it seems, because it slightly obscures the >> rest of the structure, and because matrix inverse works just fine with >> or without it. >> >> Ordering... I'm going to guess that Mike Day's H2N represents the >> canonical order for the Haar wavelet. Mostly, because I can't think of >> any reason to pick any other order and because the formulation "feels >> right". >> >> In other words: >> >> HaarM=: (Kp&(,:1 1), Kp&(,:1 _1)@(=@i.@#))@]^:[&(,.%:0.5) >> uHaarM=: (kp&(,:1 1), kp&(,:1 _1)@(=@i.@#))@]^:[&(,.1) >> >> HaarM 2 >> 0.353553 0.353553 0.353553 0.353553 >> 0.5 0.5 _0.5 _0.5 >> 0.707107 _0.707107 0 0 >> 0 0 0.707107 _0.707107 >> uHaarM 2 >> 1 1 1 1 >> 1 1 _1 _1 >> 1 _1 0 0 >> 0 0 1 _1 >> >> Wrapped up as transforms: >> >> uhaar=: +/ .*~ uHaarM@(2 ^. #) >> iuhaar=: +/ .*~ %.@uHaarM@(2 ^. #) >> >> And the normalized versions follow the same pattern (except no 'u' in >> the names nor definitions) >> >> Revisiting my (not normalized) original definitions, to get things in >> the proper order, they should have been: >> >> Haar=: _2&(Haar^:(1<#)@(+/\), -/\) >> >> and >> >> iHaar -:@(+/,@,.-/)@(,:~iHaar^:(1<#))/@($~ 2,-:@#) >> >> I need to think a bit more about whether these versions should be >> normalized - normalizing makes them significantly more complex: >> >> (haar % uhaar) p: i.2 >> 0.5 0.707107 >> (haar % uhaar) p: i.4 >> 0.353553 0.5 0.707107 0.707107 >> (haar % uhaar) p: i.8 >> 0.25 0.353553 0.5 0.5 0.707107 0.707107 0.707107 0.707107 >> >> Anyways, I've probably gone way past the saturation point on this >> particular wavelet, and I should probably be looking at other >> wavelets, instead. >> >> 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
