{VERSION 2 3 "SUN SPARC SOLARIS" "2.3" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 }{CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 } {PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 1" 0 3 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 }1 0 0 0 6 6 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 2" 3 4 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 4 4 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Out put" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Title" 0 18 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 1 0 0 0 0 0 0 }3 0 0 -1 12 12 0 0 0 0 0 0 19 0 }} {SECT 0 {EXCHG {PARA 18 "" 0 "" {TEXT -1 29 "Haar Filtering and Conden sing" }}{PARA 3 "" 0 "" {TEXT -1 31 "Filter out high frequency noise" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 41 "The goa l here is to use Haar Wavelets to " }}{PARA 0 "" 0 "" {TEXT -1 50 "fil ter out high frequency noise. First the signal " }}{PARA 0 "" 0 "" {TEXT -1 46 "is defined by defining a function f. Then the " }}{PARA 0 "" 0 "" {TEXT -1 45 "signal is discretized over the interval [0,1]" }}{PARA 0 "" 0 "" {TEXT -1 41 "with step size 2^N (N=8 or 9 is typical )." }}{PARA 0 "" 0 "" {TEXT -1 41 "Then the signal is decomposed in a \+ wavlet" }}{PARA 0 "" 0 "" {TEXT -1 50 "decomposition. The various leve ls of decomposition" }}{PARA 0 "" 0 "" {TEXT -1 56 "represent the vari ous frequency components of the signal" }}{PARA 0 "" 0 "" {TEXT -1 14 "from 0 to 2^N." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 24 "First define the signal." }}{PARA 11 "" 1 "" {TEXT -1 0 " " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "g:=x->x*exp(-x^2);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"gG:6#%\"xG6\"6$%)operatorG%&arrowG F(*&9$\"\"\"-%$expG6#,$*$F-\"\"#!\"\"F.F(F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 75 "f:=x->sin(2*Pi*x)+cos(4*Pi*x)+sin(8*Pi*x)+4*g((x-1 /3)*64)+4*g((x-2/3)*128);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"fG:6# %\"xG6\"6$%)operatorG%&arrowGF(,,-%$sinG6#,$*&%#PiG\"\"\"9$F3\"\"#F3-% $cosG6#,$F1\"\"%F3-F.6#,$F1\"\")F3-%\"gG6#,&F4\"#k#!#k\"\"$F3F:-F@6#,& F4\"$G\"#!$c#FFF3F:F(F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 " plot(f,0..1,numpoints=400,thickness=0);" }}}{PARA 0 "" 0 "" {TEXT -1 85 "Bascially, the signal f involves a smoothly varying term (given f irst) together with" }}{PARA 0 "" 0 "" {TEXT -1 68 "some high frequenc y noise (the terms involving g) at x=1/3 and 2/3." }}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "j:='j';" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"jGF$" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 54 "Now define the value of N which represents the \+ number " }}{PARA 0 "" 0 "" {TEXT -1 50 "of levels - - the highest leve l has resolution 2^N" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "N:=8;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#> %\"NG\"\")" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 50 "Now store the numbe r of data points 2^j that will" }}{PARA 0 "" 0 "" {TEXT -1 53 "be sto red at the jth level where j ranges from 0 to N" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "for j \+ from 0 to N do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "L[j]:=2^j;" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "j:='j';" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"jGF$" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "l:='l';" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#>%\"lGF$" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 53 "Now \+ discretize the function on [0,1] into the highest" }}{PARA 0 "" 0 "" {TEXT -1 10 "Nth level." }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "for l from 0 to L[N] do" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "a[N,l]:=evalf(f(l/L[N]));" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 " " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "a[8,3];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+^d-`8!\"*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "evalf(f(3/2^8));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$ \"+^d-`8!\"*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "j:='j';" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"jGF$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "l:='l';" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"lGF$" } }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 40 " Now execute the decomposition algorithm." }}{PARA 0 "" 0 "" {TEXT -1 41 "The projection of the signal onto the jth" }}{PARA 0 "" 0 "" {TEXT -1 41 "level (V_j) is given in the array a[j,*]." }}{PARA 0 "" 0 "" {TEXT -1 42 "The jth wavelet level, i.e. the projection" }}{PARA 0 "" 0 "" {TEXT -1 37 "of the signal onto W_j is represented" }}{PARA 0 "" 0 "" {TEXT -1 39 "by the array b[j,*]. Care must be taken" }} {PARA 0 "" 0 "" {TEXT -1 35 "to use the periodicity of the data." }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "for j from N by -1 to 1 do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "for l from 0 to L[j-1]-1 do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "a[j-1,l]:=(a[j,2*l]+a[j,1+2*l])/2;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "b[j-1,l]:=(a[j,2*l]-a[j,1+2*l])/2;" }}{PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 3 "od;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "a[j-1 ,L[j-1]]:=(a[j,L[j]]+a[j,1])/2;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 36 " b[j-1,L[j-1]]:=(a[j,L[j]]-a[j,1])/2;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "b[7,5];" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#$!*!*y&*\\#!#5" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 59 "If the goal is data compression, then skip to that s ection." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "j:='j'; l:='l';" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>% \"jGF$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"lGF$" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 47 "Now we plot the projection of the function onto" }}{PARA 0 "" 0 "" {TEXT -1 43 "the jth level (the array a[j,*]) by sto ring" }}{PARA 0 "" 0 "" {TEXT -1 44 "the x and y values into the array level[j,*]" }}{PARA 0 "" 0 "" {TEXT -1 36 "whose elements are of the \+ form [x,y]" }}{PARA 0 "" 0 "" {TEXT -1 26 "with x=k/L[j] and y=a[j,k] " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "for j from 0 to N do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "for l from 1 to L[j] do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 32 "le vel[j,2*l]:=[l/L[j],a[j,l-1]];" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "l evel[j,2*l-1]:=[(l-1)/L[j],a[j,l-1]];" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "j:='j'; l:='l';" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#>%\"jGF$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"lGF$ " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 44 "Now plot level j where you ca n choose which " }}{PARA 0 "" 0 "" {TEXT -1 26 "level you wish from 0 \+ to N" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "for j from 0 to N d o" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 42 "plotlevel[j]:=seq(level[j,l],l =1..2*L[j]);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "plot([plotlevel[8]],style=line, thi ckness=0);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "j:='j'; l:='l';" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#>%\"jGF$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"lGF$ " }}}{EXCHG {PARA 4 "" 0 "" {TEXT -1 35 "Reconstruction and Data Compr ession" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 28 "Here we compress the signal." }}{PARA 0 "" 0 "" {TEXT -1 40 "We defin e a tolerance tol and a variable" }}{PARA 0 "" 0 "" {TEXT -1 34 "count which will keep track of how" }}{PARA 0 "" 0 "" {TEXT -1 40 "many coe fficients that are set equal to " }}{PARA 0 "" 0 "" {TEXT -1 5 "zero. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "j:='j'; l:='l'; tol:=.05; count:=0;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"jGF$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"lGF$" } }{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$tolG$\"\"&!\"#" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#>%&countG\"\"!" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "for j from 0 to N-1 do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "f or l from 1 to L[j] do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 55 "if abs(b[ j,l])< tol then b[j,l]:=0; count:=count+1; fi;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "j:='j'; l:='l'; count;" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"jGF$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"lGF$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"$B\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 53 "Note that 2^N-count represents the number of NON-zero" }}{PARA 0 "" 0 "" {TEXT -1 21 "wavelet coefficients." }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 54 "Now we re construct the signal using the (now modified)" }}{PARA 0 "" 0 "" {TEXT -1 21 "wavelet coefficients." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "for j from 1 to N \+ do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "for l from 1 to L[j-1] do" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "a[j,2*l]:=a[j-1,l]+b[j-1,l];" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "a[j,2*l-1]:=a[j-1,l-1]-b[j-1,l-1]; " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "a[j,0]:=a[j-1,0]+b[j-1,0];" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "j:='j'; l:='l';" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"jGF$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>% \"lGF$" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 44 "Now we plot the compres sed signal by forming" }}{PARA 0 "" 0 "" {TEXT -1 49 "an array of x,y \+ values in rlevel[j,*]. This array" }}{PARA 0 "" 0 "" {TEXT -1 49 "is o f the form [x,y] where x is the x-coordinate," }}{PARA 0 "" 0 "" {TEXT -1 45 "i.e. k/L[j]) and whose y coordinate is a[j,k]" }}{PARA 0 "" 0 "" {TEXT -1 30 "where k ranges from 1 to L[j]." }}{PARA 0 "" 0 " " {TEXT -1 33 "Note that the same y value a[j,k]" }}{PARA 0 "" 0 "" {TEXT -1 40 "is used for 2 x-values - - one at either" }}{PARA 0 "" 0 "" {TEXT -1 46 "end of the interval from k/L[j] to (k+1)/L[j]." }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "for j f rom 0 to N do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "for l from 1 to L[ j] do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "rlevel[j,2*l]:=[l/L[j],a[j ,l-1]];" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "rlevel[j,2*l-1]:=[(l-1)/ L[j],a[j,l-1]];" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "j:='j'; l:='l';" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"jGF$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>% \"lGF$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "for j from 0 to N do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "plotrlevel[j]:=seq(rlevel[j, l],l=1..2*L[j]);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 46 "plot([plotrlevel[N]],style=line, th ickness=0);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "plot(f,0..1, thickness =0);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "j:='j'; \+ l:='l';" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"jGF$" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#>%\"lGF$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}} {MARK "58 0 0" 0 }{VIEWOPTS 1 1 0 2 1 1805 }