diff --git a/analysis.html b/analysis.html new file mode 100644 index 0000000..233daec --- /dev/null +++ b/analysis.html @@ -0,0 +1,90 @@ + + +
++
+ ++ ++ ¤ To reduce a set of time series to a few parameters that + capture a large variance percentage, and,
+ +
+ ¤ To use these dominant parameters to explain the + behavior of the time series. +
Method + | Single Time Series + | Multi-series
+
+
+ |
++ | + | + | +Increasing +Complexity +(more +variables) + | + | + | + | + \|/ + V ++
+ | Statistics
+ |
+ | Spectrum
+ |
+ | Wavelet Transform
+ |
+ | Orthogonal Modes
+ |
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + diff --git a/bams_79_01_0061.ps.zip b/bams_79_01_0061.ps.zip new file mode 100644 index 0000000..b54d3d9 Binary files /dev/null and b/bams_79_01_0061.ps.zip differ diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..8149549 Binary files /dev/null and b/favicon.ico differ diff --git a/history.html b/history.html new file mode 100644 index 0000000..8c64a3d --- /dev/null +++ b/history.html @@ -0,0 +1,50 @@ + + +
+1800's | Joseph Fourier + | Fourier transform & series; heat diffusion + |
+ | ||
1909 | Alfred Haar + | rectangular Haar basis functions + |
+ | ||
1946 | Dennis Gabor + | time-frequency Gabor wavelets; communication theory + |
+ | ||
1947 + | Jean Ville & Hermann Wigner + | Wigner-Ville transform; quantum mechanics + |
+ | ||
1965 | Cooley & Tukey + | Fast Fourier Transform (FFT) + |
+ | ||
1984 | Grossman & Morlet + | synthesis of theory; geophysics & earthquakes + |
+ | ||
1985 | Yves Meyer + | family of wavelets for complex phenomena + |
+ | ||
1988-89 + | Stephane Mallat & Ingrid Daubechies + | discrete wavelet transform + |
+
+Adapted from ``Signal processing: A historical perspective''
+(http://www.monash.edu.au/cmcm/wavelet/whistory.htm)
+
+
+
- --
+ Software for Fortran, IDL, Matlab, and Python +- Wavelet Analysis & Monte Carlo -
-
- References & Web Sites -
-
- Interactive Wavelet Plot is no longer available - + + Wavelet Analysis & Monte Carlo
-
- Software for Fortran, IDL, Matlab, and Python + References & Web Sites
-
- Frequently Asked Questions (FAQ) + Interactive Wavelet Plot (no longer available)
-
- Article: - "A Practical Guide to Wavelet Analysis", - C. Torrence and G. P. Compo, 1998. - - Permission to place a copy of this work on this - server has been provided by the - American Meteorological Society.
- The AMS does not guarantee that the copy provided - here is an accurate copy of the published work. --
- Wavelet Coherency and Phase -
+ Frequently Asked Questions (FAQ) +
+ Article: "A Practical Guide to Wavelet Analysis", + C. Torrence and G. P. Compo, 1998*.
++ Abstract & List of Topics+
+ Additional information & Errata +
-
This site is hosted by the Department of Atmospheric and Oceanic Sciences at the University of Colorado Boulder
@@ -84,5 +75,10 @@ Wavelet web page statistics ] --> + * Permission to place a copy of this work on this + server has been provided by the + American Meteorological Society. + The AMS does not guarantee that the copy provided + here is an accurate copy of the published work. diff --git a/plot/data/mauna.dat b/plot/data/mauna.dat new file mode 100644 index 0000000..4bf8863 --- /dev/null +++ b/plot/data/mauna.dat @@ -0,0 +1,475 @@ +$submit + Submit +$dataset +soi +$title +Mauna Loa Carbon Dioxide +$source +Carbon Dioxide Info. Anal. Center (CDIAC) +$dataset1 +CO2 +$units +ppm +t0 +1958.0 +dt +0.08333333 +$t_units +years +data +315.56 +315.56 +315.56 +317.29 +317.34 +316.52 +315.69 +314.78 +313.05 +313.11 +313.18 +314.50 +315.42 +316.31 +316.50 +317.56 +318.13 +318.00 +316.39 +314.65 +313.68 +313.18 +314.66 +315.43 +316.27 +316.81 +317.42 +318.87 +319.87 +319.43 +318.01 +315.74 +314.00 +313.68 +314.84 +316.03 +316.73 +317.54 +318.38 +319.31 +320.42 +319.61 +318.42 +316.63 +314.84 +315.16 +315.94 +316.85 +317.78 +318.40 +319.53 +320.42 +320.85 +320.45 +319.45 +317.25 +316.11 +315.27 +316.53 +317.53 +318.58 +318.93 +319.70 +321.22 +322.08 +321.31 +319.58 +317.61 +316.05 +315.83 +316.91 +318.20 +319.41 +320.07 +320.73 +321.39 +322.05 +321.73 +320.27 +318.53 +316.54 +316.72 +317.53 +318.55 +319.27 +320.28 +320.73 +321.97 +322.00 +321.71 +321.05 +318.71 +317.66 +317.14 +318.70 +319.25 +320.46 +321.43 +322.23 +323.54 +323.91 +323.59 +322.24 +320.20 +318.48 +317.94 +319.63 +320.87 +322.17 +322.34 +322.88 +324.25 +324.83 +323.93 +322.38 +320.76 +319.10 +319.24 +320.56 +321.80 +322.40 +322.99 +323.73 +324.86 +325.40 +325.20 +323.98 +321.95 +320.18 +320.09 +321.16 +322.74 +323.83 +324.27 +325.47 +326.50 +327.21 +326.54 +325.72 +323.50 +322.22 +321.62 +322.69 +323.95 +324.89 +325.82 +326.77 +327.97 +327.90 +327.50 +326.18 +324.53 +322.93 +322.90 +323.85 +324.96 +326.01 +326.51 +327.02 +327.62 +328.76 +328.40 +327.20 +325.27 +323.20 +323.40 +324.63 +325.85 +326.60 +327.47 +327.58 +329.56 +329.90 +328.92 +327.88 +326.16 +324.68 +325.04 +326.34 +327.39 +328.37 +329.40 +330.14 +331.33 +332.31 +331.90 +330.70 +329.15 +327.35 +327.02 +327.99 +328.48 +329.18 +330.55 +331.32 +332.48 +332.92 +332.08 +331.01 +329.23 +327.27 +327.21 +328.29 +329.41 +330.23 +331.25 +331.87 +333.14 +333.80 +333.43 +331.73 +329.90 +328.40 +328.17 +329.32 +330.59 +331.58 +332.39 +333.33 +334.41 +334.71 +334.17 +332.89 +330.77 +329.14 +328.78 +330.14 +331.52 +332.75 +333.24 +334.53 +335.90 +336.57 +336.10 +334.76 +332.59 +331.42 +330.98 +332.24 +333.68 +334.80 +335.22 +336.47 +337.59 +337.84 +337.72 +336.37 +334.51 +332.60 +332.38 +333.75 +334.78 +336.05 +336.59 +337.79 +338.71 +339.30 +339.12 +337.56 +335.92 +333.75 +333.70 +335.12 +336.56 +337.84 +338.19 +339.91 +340.60 +341.29 +341.00 +339.39 +337.43 +335.72 +335.84 +336.93 +338.04 +339.06 +340.30 +341.21 +342.33 +342.74 +342.08 +340.32 +338.26 +336.52 +336.68 +338.19 +339.44 +340.57 +341.44 +342.53 +343.39 +343.96 +343.18 +341.88 +339.65 +337.81 +337.69 +339.09 +340.32 +341.20 +342.35 +342.93 +344.77 +345.58 +345.14 +343.81 +342.21 +339.69 +339.82 +340.98 +342.82 +343.52 +344.33 +345.11 +346.89 +347.25 +346.62 +345.22 +343.11 +340.90 +341.18 +342.80 +344.04 +344.79 +345.82 +347.25 +348.17 +348.74 +348.07 +346.38 +344.52 +342.92 +342.62 +344.06 +345.38 +346.11 +346.78 +347.68 +349.37 +350.03 +349.37 +347.76 +345.73 +344.68 +343.99 +345.48 +346.72 +347.84 +348.29 +349.24 +350.80 +351.66 +351.08 +349.33 +347.92 +346.27 +346.18 +347.64 +348.78 +350.25 +351.54 +352.05 +353.41 +354.04 +353.63 +352.22 +350.27 +348.55 +348.72 +349.91 +351.18 +352.60 +352.92 +353.53 +355.26 +355.52 +354.97 +353.75 +351.52 +349.64 +349.83 +351.14 +352.37 +353.50 +354.55 +355.23 +356.04 +357.00 +356.07 +354.67 +352.76 +350.82 +351.04 +352.70 +354.07 +354.59 +355.63 +357.03 +358.48 +359.22 +358.12 +356.06 +353.92 +352.05 +352.11 +353.64 +354.89 +355.88 +356.63 +357.72 +359.07 +359.58 +359.17 +356.94 +354.92 +352.94 +353.23 +354.09 +355.33 +356.63 +357.10 +358.32 +359.41 +360.23 +359.55 +357.53 +355.48 +353.67 +353.95 +355.30 +356.78 +358.34 +358.89 +359.95 +361.25 +361.67 +360.94 +359.55 +357.49 +355.84 +356.00 +357.59 +359.05 +359.98 +361.03 +361.66 +363.48 +363.82 +363.30 +361.93 +359.49 +358.08 +357.77 +359.57 +360.69 diff --git a/plot/data/monsoon.dat b/plot/data/monsoon.dat new file mode 100644 index 0000000..b3335b2 --- /dev/null +++ b/plot/data/monsoon.dat @@ -0,0 +1,515 @@ +$submit + Submit +$dataset +nino3sst +$title +All-India Monsoon Rainfall +$source +Parthasarathy et al. 1991: J. Climate, 4, 927-938 +$dataset1 +Rainfall +$units +mm +t0 +1871.0 +dt +0.25 +$t_units +years +data + 1.97 + 21.17 +-15.97 +-14.79 + -5.46 + 5.00 + 11.89 + 1.65 + -2.23 +-20.67 +-14.81 +-13.02 + -1.23 + 23.70 + 19.33 + -1.45 + -1.56 + 8.10 + 16.13 +-16.75 + -6.66 +-19.90 +-11.44 +-20.62 + 12.57 + 1.03 +-75.71 + 14.28 + -2.90 + -3.00 + 52.33 + 0.31 + -6.00 + 14.67 + 6.36 + -1.99 + -1.13 + 5.40 +-18.67 + 10.48 + -0.46 + -1.57 + 3.99 +-10.02 + -3.50 + 16.47 + 0.43 + 6.48 + 0.54 + 13.63 +-14.57 + 2.18 + -5.43 + -8.03 + 28.26 + 7.91 + -1.93 + 8.23 +-11.74 + 11.91 + -3.50 + 13.07 + -4.01 + 16.75 + -1.96 + 7.93 + 6.96 + 7.28 + 2.14 +-10.23 + -3.17 + -7.22 + -2.73 + 10.20 + 12.83 + 1.98 + -5.96 + 15.93 + -3.71 + -2.25 + 6.94 +-26.13 + 6.76 +-11.89 + -5.76 + 0.97 + 48.33 + -0.42 + 19.57 + 39.80 + 8.19 + 14.38 + 1.74 + 11.83 + 21.99 + 23.61 + -2.80 + 11.80 +-21.11 + -5.19 + -7.63 + 6.53 +-21.14 +-14.75 + 1.20 +-11.43 + 19.93 + -6.65 + -1.10 + -3.90 + 8.06 + -1.02 + -6.36 + 19.33 +-84.94 +-20.99 + -2.16 +-11.40 + 23.96 +-15.55 + 11.20 +-18.83 +-27.21 + -4.55 + -6.53 +-20.33 + -0.21 + 1.41 + -4.90 +-15.57 + 15.06 + 22.41 + -1.33 + 12.40 +-39.31 +-10.25 + 5.64 +-25.50 +-21.04 +-15.65 + 12.27 + -4.70 + 4.86 + -6.52 + 8.47 + -3.07 +-21.77 +-21.05 + -1.30 +-19.87 + 26.86 +-23.35 + -4.66 + 26.73 + -3.07 +-16.29 + -7.10 + 8.83 + 11.53 + 8.85 + 0.90 + 4.70 +-48.31 + 1.75 + -0.06 +-23.00 + 3.79 + 1.41 + 3.20 + 21.20 +-39.81 + -2.79 + -3.63 + 5.83 + 15.96 +-14.35 + 14.77 + 1.23 +-21.61 + 9.71 + -8.36 + 9.50 + 20.93 + 26.95 + 4.54 + 22.33 + 33.73 + 25.15 + -3.90 + 15.30 +-73.04 +-15.72 + 7.44 + 3.00 + 5.46 + 7.75 + 5.34 +-10.43 +-37.44 +-13.69 + 1.30 + -4.47 + 3.33 +-10.09 + -2.40 + -2.57 + -0.01 + 1.81 + 4.67 +-29.30 + 13.59 + -8.25 + -4.16 +-22.67 + 21.03 + 4.95 + -7.63 + 18.73 +-24.07 + 4.28 + 11.54 +-27.23 + 44.13 +-16.85 + 2.87 + -4.50 + 1.09 + 3.85 + 2.64 + -8.03 +-25.04 + 12.45 + 1.27 + 9.07 +-16.81 + 6.05 + -2.36 + 3.23 +-19.14 + 15.38 + -2.56 +-20.97 + 24.56 + 26.35 + -3.40 +-14.03 + 0.86 + 6.21 + -0.03 + 32.43 + 28.26 + 2.78 + -2.66 + 6.80 + 7.06 + -3.92 + -2.43 +-17.63 + 4.86 +-15.32 + 4.84 + 33.27 + -6.64 + 7.58 + 5.00 + 3.10 + -0.84 + 1.91 + 0.90 + 26.87 + -6.44 + -7.32 + 0.84 +-12.37 +-15.57 + 2.61 + 6.64 + 4.63 + -1.61 + 4.18 + -0.60 + 2.07 +-41.61 + -4.09 + 3.70 + 2.80 + 31.73 +-13.09 + 6.80 + 7.67 + 8.73 + 0.08 + 19.57 +-13.67 + 31.46 + 4.68 + -1.66 + -2.93 + 21.09 + -4.85 + -3.86 + 20.43 + 2.49 + 28.35 + 1.74 +-16.37 + 44.69 + -8.42 + 4.17 + 0.37 + 11.59 + 10.25 + -6.16 + 4.47 + 25.69 + -2.89 + 2.37 +-14.40 + 13.79 + -9.29 + -1.00 + -1.23 +-35.01 + -1.95 + -3.26 + 3.90 +-19.17 + -4.95 + -1.73 + -7.27 + 25.96 + -3.82 + 0.70 +-13.30 + 19.46 + -8.39 + -2.63 + 10.67 + 20.53 + 22.35 + -2.33 + 25.17 + 28.86 + 29.88 + 6.17 + -9.40 +-15.17 + -9.35 + -3.86 +-12.90 + 28.46 + 7.25 + 0.34 + -1.23 + 32.66 + 12.95 + -1.86 + -9.20 + 1.59 + 0.01 + 6.14 + 10.00 + 48.13 + 10.38 + -2.40 +-14.50 + 4.99 + 2.68 + -4.13 + -3.50 + 5.49 + 3.81 + -7.80 + -9.93 + 29.99 + -4.92 + -3.10 +-24.23 +-29.97 +-15.39 + -4.63 + -2.70 +-38.21 + 5.58 + 8.54 +-14.97 + 9.93 + -5.19 + 2.74 +-15.70 +-23.57 + -6.39 + -7.53 +-13.73 + 7.09 + -0.95 + 5.74 + 16.93 + 13.36 + -7.92 + -2.66 + 31.17 + -7.14 + 2.91 + -6.23 +-18.07 +-52.84 + -3.39 + -4.86 +-10.90 + 27.79 + 14.38 + -6.46 +-17.80 +-15.57 + 0.78 + -2.96 + -1.67 + 31.23 + 9.75 + -4.50 +-11.27 + 8.69 + -7.59 + -5.90 + 22.37 + 1.99 + 16.31 + 3.20 + 10.37 + 6.96 + 0.65 + 4.27 +-14.13 +-41.51 + 8.68 + -4.10 + 13.83 + -7.07 + -8.79 + 3.17 + -5.87 + 8.19 + -9.09 + 4.57 + -8.50 +-27.74 + -5.19 + -2.80 + -4.70 + 43.03 + 2.71 + 5.30 + -0.43 + -8.71 +-13.05 + -1.80 +-11.40 +-23.17 + 8.68 + 3.80 + 3.30 +-41.14 + 1.95 + -0.50 +-19.97 +-35.84 + 14.65 + -2.16 + -1.17 + 38.69 +-12.45 + -3.26 + 0.20 + -1.91 +-14.89 + 5.20 + 22.57 + 15.86 + 7.55 + -2.66 + 6.33 +-28.37 + -3.62 + -6.23 +-18.67 + -8.37 + 0.78 + -0.50 + 12.00 + 7.89 + 6.58 + 2.77 + 16.57 + 11.36 + 0.91 diff --git a/plot/data/nino3sst.dat b/plot/data/nino3sst.dat new file mode 100644 index 0000000..8b2b993 --- /dev/null +++ b/plot/data/nino3sst.dat @@ -0,0 +1,523 @@ +$submit + Submit +$dataset +nino3sst +$title +NINO3 Sea Surface Temperature +$source +UK Meteorological Office GISST2.3 +$dataset1 +NINO3 SST +$units +!Uo!NC +t0 +1871.0 +dt +0.25 +$t_units +years +data +-0.15 +-0.30 +-0.14 +-0.41 +-0.46 +-0.66 +-0.50 +-0.80 +-0.95 +-0.72 +-0.31 +-0.71 +-1.04 +-0.77 +-0.86 +-0.84 +-0.41 +-0.49 +-0.48 +-0.72 +-1.21 +-0.80 + 0.16 + 0.46 + 0.40 + 1.00 + 2.17 + 2.50 + 2.34 + 0.80 + 0.14 +-0.06 +-0.34 +-0.71 +-0.34 +-0.73 +-0.48 +-0.11 + 0.22 + 0.51 + 0.51 + 0.25 +-0.10 +-0.33 +-0.42 +-0.23 +-0.53 +-0.44 +-0.30 + 0.15 + 0.09 + 0.19 +-0.06 + 0.25 + 0.30 + 0.81 + 0.26 + 0.10 + 0.34 + 1.01 +-0.31 +-0.90 +-0.73 +-0.92 +-0.73 +-0.31 +-0.03 + 0.12 + 0.37 + 0.82 + 1.22 + 1.83 + 1.60 + 0.34 +-0.72 +-0.87 +-0.85 +-0.40 +-0.39 +-0.65 + 0.07 + 0.67 + 0.39 + 0.03 +-0.17 +-0.76 +-0.87 +-1.36 +-1.10 +-0.99 +-0.78 +-0.93 +-0.87 +-0.44 +-0.34 +-0.50 +-0.39 +-0.04 + 0.42 + 0.62 + 0.17 + 0.23 + 1.03 + 1.54 + 1.09 + 0.01 + 0.12 +-0.27 +-0.47 +-0.41 +-0.37 +-0.36 +-0.39 + 0.43 + 1.05 + 1.58 + 1.25 + 0.86 + 0.60 + 0.21 + 0.19 +-0.23 +-0.29 + 0.18 + 0.12 + 0.71 + 1.42 + 1.59 + 0.93 +-0.25 +-0.66 +-0.95 +-0.47 + 0.06 + 0.70 + 0.81 + 0.78 + 1.43 + 1.22 + 1.05 + 0.44 +-0.35 +-0.67 +-0.84 +-0.66 +-0.45 +-0.12 +-0.20 +-0.16 +-0.47 +-0.52 +-0.79 +-0.80 +-0.62 +-0.86 +-1.29 +-1.04 +-1.05 +-0.75 +-0.81 +-0.90 +-0.25 + 0.62 + 1.22 + 0.96 + 0.21 +-0.11 +-0.25 +-0.24 +-0.43 + 0.23 + 0.67 + 0.78 + 0.41 + 0.98 + 1.28 + 1.45 + 1.02 + 0.03 +-0.59 +-1.34 +-0.99 +-1.49 +-1.74 +-1.33 +-0.55 +-0.51 +-0.36 +-0.99 + 0.32 + 1.04 + 1.41 + 0.99 + 0.66 + 0.50 + 0.22 + 0.71 +-0.16 + 0.38 + 0.00 +-1.11 +-1.04 + 0.05 +-0.64 +-0.34 +-0.50 +-1.85 +-0.94 +-0.78 + 0.29 + 0.27 + 0.69 +-0.06 +-0.83 +-0.80 +-1.02 +-0.96 +-0.09 + 0.62 + 0.87 + 1.03 + 0.70 +-0.10 +-0.31 + 0.04 +-0.46 + 0.04 + 0.24 +-0.08 +-0.28 + 0.06 + 0.05 +-0.31 + 0.11 + 0.27 + 0.26 + 0.04 + 0.12 + 1.11 + 1.53 + 1.23 + 0.17 +-0.18 +-0.56 + 0.05 + 0.41 + 0.22 + 0.04 +-0.19 +-0.46 +-0.65 +-1.06 +-0.54 + 0.14 + 0.25 +-0.21 +-0.73 +-0.43 + 0.48 + 0.26 + 0.05 + 0.11 +-0.27 +-0.08 +-0.10 + 0.29 +-0.15 +-0.28 +-0.55 +-0.44 +-1.40 +-0.55 +-0.69 + 0.58 + 0.37 + 0.42 + 1.83 + 1.23 + 0.65 + 0.41 + 1.03 + 0.64 +-0.07 + 0.98 + 0.36 +-0.30 +-1.33 +-1.39 +-0.94 + 0.34 +-0.00 +-0.15 + 0.06 + 0.39 + 0.36 +-0.49 +-0.53 + 0.35 + 0.07 +-0.24 + 0.20 +-0.22 +-0.68 +-0.44 + 0.02 +-0.22 +-0.30 +-0.59 + 0.10 +-0.02 +-0.27 +-0.60 +-0.48 +-0.37 +-0.53 +-1.35 +-1.22 +-0.99 +-0.34 +-0.79 +-0.24 + 0.02 + 0.69 + 0.78 + 0.17 +-0.17 +-0.29 +-0.27 + 0.31 + 0.44 + 0.38 + 0.24 +-0.13 +-0.89 +-0.76 +-0.71 +-0.37 +-0.59 +-0.63 +-1.47 +-0.40 +-0.18 +-0.37 +-0.43 +-0.06 + 0.61 + 1.33 + 1.19 + 1.13 + 0.31 + 0.14 + 0.03 + 0.21 + 0.15 +-0.22 +-0.02 + 0.03 +-0.17 + 0.12 +-0.35 +-0.06 + 0.38 +-0.45 +-0.32 +-0.33 +-0.49 +-0.14 +-0.56 +-0.18 + 0.46 + 1.09 + 1.04 + 0.23 +-0.99 +-0.59 +-0.92 +-0.28 + 0.52 + 1.31 + 1.45 + 0.61 +-0.11 +-0.18 +-0.39 +-0.39 +-0.36 +-0.50 +-0.81 +-1.10 +-0.29 + 0.57 + 0.68 + 0.78 + 0.78 + 0.63 + 0.98 + 0.49 +-0.42 +-1.34 +-1.20 +-1.18 +-0.65 +-0.42 +-0.97 +-0.28 + 0.77 + 1.77 + 2.22 + 1.05 +-0.67 +-0.99 +-1.52 +-1.17 +-0.22 +-0.04 +-0.45 +-0.46 +-0.75 +-0.70 +-1.38 +-1.15 +-0.01 + 0.97 + 1.10 + 0.68 +-0.02 +-0.04 + 0.47 + 0.30 +-0.55 +-0.51 +-0.09 +-0.01 + 0.34 + 0.61 + 0.58 + 0.33 + 0.38 + 0.10 + 0.18 +-0.30 +-0.06 +-0.28 + 0.12 + 0.58 + 0.89 + 0.93 + 2.39 + 2.44 + 1.92 + 0.64 +-0.24 + 0.27 +-0.13 +-0.16 +-0.54 +-0.13 +-0.37 +-0.78 +-0.22 + 0.03 + 0.25 + 0.31 + 1.03 + 1.10 + 1.05 + 1.11 + 1.28 + 0.57 +-0.55 +-1.16 +-0.99 +-0.38 + 0.01 +-0.29 + 0.09 + 0.46 + 0.57 + 0.24 + 0.39 + 0.49 + 0.86 + 0.51 + 0.95 + 1.25 + 1.33 +-0.00 + 0.34 + 0.66 + 1.11 + 0.34 + 0.48 + 0.56 + 0.39 +-0.17 + 1.04 + 0.77 + 0.12 +-0.35 +-0.22 + 0.08 +-0.08 +-0.18 +-0.06 diff --git a/plot/data/soi.dat b/plot/data/soi.dat new file mode 100644 index 0000000..fd018b0 --- /dev/null +++ b/plot/data/soi.dat @@ -0,0 +1,419 @@ +$submit + Submit +$dataset +nino3sst +$title +Southern Oscillation Index +$source +Climate Prediction Center +$dataset1 +SOI +$units +mb +t0 +1896 +dt +0.25 +$t_units +years +data + 0.75 +-2.48 +-2.41 +-1.84 +-2.55 +-1.61 +-0.04 + 0.16 + 1.85 + 0.19 + 1.19 + 0.46 + 2.05 +-0.61 +-1.01 + 0.73 +-2.75 +-0.11 +-0.08 +-1.84 + 0.55 + 0.89 + 0.29 +-2.00 + 1.51 + 0.69 +-1.48 +-1.00 +-0.59 + 1.05 + 0.66 + 1.20 + 2.41 + 1.22 +-0.51 +-0.90 +-3.89 +-4.55 +-1.94 +-2.37 +-1.55 +-0.81 + 1.99 + 1.54 + 0.11 +-0.41 +-0.66 +-0.11 +-0.76 + 0.09 + 1.34 + 0.06 +-0.52 + 0.35 + 0.99 + 0.70 + 2.05 + 1.09 + 2.29 + 2.36 + 0.35 +-0.88 +-1.84 +-1.44 +-2.69 +-1.75 +-0.84 +-1.04 +-0.72 +-0.88 +-1.21 +-1.77 + 0.11 +-1.50 +-2.29 +-1.50 +-3.61 +-0.69 + 1.28 +-0.01 +-0.49 + 0.55 + 2.22 + 1.63 + 2.01 + 2.62 + 4.69 + 3.20 + 1.78 + 0.92 +-1.54 +-0.97 +-2.89 +-0.95 +-1.28 +-1.97 +-0.55 + 0.05 + 0.92 + 0.16 + 1.54 + 0.75 +-0.04 + 1.23 + 1.28 +-0.31 + 0.16 + 1.26 + 0.98 + 0.35 +-2.48 +-1.00 +-0.29 + 0.12 + 1.22 + 1.16 + 2.08 + 0.25 +-1.68 +-2.00 +-4.05 +-2.31 +-2.08 +-1.17 + 1.28 + 0.79 +-0.42 +-0.37 + 0.68 + 0.02 + 0.92 + 1.23 + 2.51 +-0.35 +-0.01 + 1.20 + 1.18 +-0.35 +-0.88 +-0.00 +-0.39 + 1.59 + 0.34 +-0.26 +-0.50 +-0.89 +-1.57 +-0.47 +-0.79 + 0.15 + 0.12 + 0.86 + 0.31 + 0.39 +-1.54 + 0.46 + 0.71 +-0.21 + 0.36 + 0.10 +-0.25 + 0.29 +-0.24 +-0.84 + 0.45 + 0.05 +-0.21 +-0.17 + 0.38 + 1.42 + 1.92 + 1.50 + 2.11 + 0.22 +-0.31 +-2.10 +-1.15 +-1.88 +-2.94 +-2.87 +-2.65 +-1.41 +-2.64 +-2.37 +-1.75 + 0.25 + 0.49 + 0.93 + 1.41 + 0.25 + 0.72 +-0.10 +-0.19 +-0.51 +-0.28 +-0.77 + 1.38 +-0.05 + 1.12 + 0.16 +-0.22 +-1.35 +-1.78 +-1.34 +-0.15 +-0.75 + 1.36 + 0.46 +-0.89 +-0.01 +-0.74 +-0.04 +-0.25 +-0.78 +-0.34 + 0.26 + 2.41 + 1.99 + 1.96 + 2.83 + 0.85 +-1.02 +-1.75 +-1.81 +-1.18 + 0.25 +-0.12 +-0.81 +-0.81 +-1.38 +-1.82 +-0.71 +-0.18 + 0.22 + 0.68 + 0.82 + 0.65 + 0.82 + 2.35 + 2.02 + 2.05 + 1.55 + 1.12 + 1.55 +-0.11 +-0.68 +-1.05 +-1.05 +-1.88 +-0.45 + 0.28 +-0.91 +-1.18 +-0.05 +-0.55 + 1.12 + 0.19 + 0.35 + 0.88 + 0.59 +-1.28 + 0.22 +-0.05 + 0.75 + 0.55 + 0.68 + 0.38 + 0.62 + 1.12 +-0.12 +-0.75 +-2.28 +-0.08 + 0.75 + 1.72 + 0.42 +-0.11 +-1.08 +-2.62 +-1.61 +-2.11 +-0.68 +-0.02 +-0.58 + 2.25 +-0.15 + 0.55 +-0.88 + 0.59 + 0.92 + 0.08 +-0.41 +-1.58 +-0.75 +-1.28 +-0.65 +-1.55 + 0.25 + 0.52 + 2.49 + 2.29 + 1.32 + 1.62 + 1.22 + 0.75 +-1.92 +-2.35 +-1.81 +-1.18 + 0.45 + 1.58 + 2.89 + 3.65 + 0.92 + 1.55 + 0.32 + 0.55 + 1.38 + 3.35 + 2.75 + 2.35 + 0.05 +-2.02 + 0.19 +-0.41 +-1.65 +-1.98 +-2.35 +-2.51 + 0.52 + 0.32 +-0.58 +-0.18 + 0.08 + 0.45 +-1.08 +-0.41 +-0.92 +-0.42 +-0.55 +-1.25 + 0.65 + 0.82 +-0.11 + 0.69 +-1.32 +-3.38 +-4.31 +-6.45 +-0.68 +-0.05 +-0.08 +-0.08 +-0.38 + 0.12 +-0.41 + 0.45 + 0.22 + 0.22 +-0.48 +-0.35 + 0.12 +-0.68 +-1.51 +-2.55 +-2.82 +-2.35 +-0.81 +-0.48 + 0.18 + 2.35 + 2.35 + 1.79 + 1.68 + 0.35 +-0.28 +-2.01 + 0.52 +-0.52 +-0.58 +-0.45 +-1.62 +-1.48 +-2.41 +-4.11 +-1.35 +-0.42 +-1.91 +-1.85 +-1.95 +-1.82 +-0.88 +-0.91 +-1.98 +-2.85 +-2.08 +-0.45 +-1.08 + 0.32 +-0.58 diff --git a/plot/data/sunspot.dat b/plot/data/sunspot.dat new file mode 100644 index 0000000..e818d3c --- /dev/null +++ b/plot/data/sunspot.dat @@ -0,0 +1,1011 @@ +$submit + Submit +$dataset +nino3sst +$title +Wolf's Sunspot Number +$source +Nat. Geophys. Data Center +$dataset1 +Sunspots +$units +# +t0 +1748 +dt +0.25 +$t_units +years +data + 0.00 + 0.00 + 0.00 + 0.00 + 63.53 + 74.73 + 79.00 +106.43 + 79.47 + 92.77 + 93.20 + 68.13 + 52.93 + 55.93 + 49.87 + 31.90 + 52.00 + 52.87 + 44.93 + 41.40 + 40.57 + 35.23 + 29.67 + 17.23 + 1.57 + 20.37 + 13.10 + 13.83 + 9.40 + 2.17 + 9.87 + 16.83 + 8.33 + 11.60 + 7.27 + 13.57 + 20.50 + 26.97 + 38.67 + 43.57 + 46.20 + 54.57 + 48.40 + 41.23 + 46.37 + 48.67 + 66.50 + 54.33 + 67.17 + 59.53 + 67.63 + 57.10 + 80.57 + 92.73 + 95.30 + 74.80 + 54.10 + 59.07 + 56.67 + 74.77 + 40.87 + 33.80 + 49.60 + 56.20 + 53.20 + 36.23 + 29.40 + 26.57 + 25.00 + 20.73 + 24.23 + 13.67 + 19.87 + 11.93 + 3.87 + 9.97 + 33.47 + 32.00 + 35.13 + 50.70 + 55.30 + 65.93 + 64.73 + 93.40 + 67.47 + 88.23 +129.23 +139.43 +108.87 + 68.13 +113.50 +112.70 + 42.97 +112.37 + 75.87 + 95.13 + 74.27 + 62.40 + 61.33 + 67.97 + 44.93 + 34.13 + 23.23 + 36.80 + 55.97 + 41.20 + 10.67 + 14.63 + 5.33 + 9.13 + 4.03 + 9.53 + 13.20 + 17.33 + 13.73 + 35.00 + 40.17 + 85.50 +107.73 +136.60 +140.20 +185.17 +154.90 +137.20 +132.80 +132.90 +122.00 +116.00 + 88.67 + 96.73 + 88.57 + 65.23 + 75.47 + 90.23 + 63.50 + 43.17 + 42.83 + 44.43 + 38.33 + 28.23 + 31.13 + 25.50 + 23.40 + 11.17 + 10.67 + 8.33 + 8.67 + 13.00 + 7.83 + 20.90 + 29.43 + 38.23 + 44.17 + 78.90 + 94.73 +113.67 +109.37 +120.40 +140.83 +157.50 +136.83 +125.23 +139.50 +122.07 +119.77 +122.27 +110.67 +119.73 +108.93 + 92.67 + 77.87 + 80.10 + 69.57 + 71.70 + 60.17 + 64.90 + 61.67 + 66.23 + 54.93 + 57.33 + 55.50 + 52.10 + 34.43 + 45.57 + 42.33 + 41.87 + 30.70 + 49.10 + 24.63 + 22.23 + 17.37 + 20.83 + 20.50 + 19.80 + 15.60 + 8.17 + 7.53 + 7.47 + 5.33 + 5.23 + 6.13 + 0.37 + 1.80 + 7.97 + 11.97 + 9.07 + 0.70 + 5.30 + 10.03 + 9.57 + 17.33 + 20.97 + 28.67 + 31.40 + 35.73 + 40.20 + 45.20 + 44.00 + 49.93 + 41.00 + 43.43 + 35.10 + 42.57 + 51.10 + 47.20 + 39.60 + 41.97 + 61.10 + 52.17 + 39.00 + 41.57 + 36.23 + 33.77 + 26.57 + 26.77 + 25.33 + 11.27 + 15.27 + 10.13 + 3.53 + 1.50 + 13.10 + 8.80 + 9.17 + 5.77 + 4.07 + 0.30 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 3.00 + 2.67 + 4.63 + 0.77 + 7.10 + 7.30 + 4.07 + 11.10 + 14.00 + 19.60 + 13.30 + 14.83 + 9.63 + 17.97 + 25.87 + 32.43 + 38.07 + 45.23 + 56.27 + 48.90 + 36.60 + 41.47 + 63.50 + 29.20 + 43.90 + 27.63 + 27.57 + 41.33 + 28.53 + 22.77 + 19.07 + 24.93 + 24.13 + 27.73 + 16.77 + 19.83 + 17.23 + 8.63 + 10.47 + 4.23 + 3.90 + 7.80 + 5.67 + 6.87 + 3.33 + 0.13 + 0.20 + 0.00 + 0.17 + 6.80 + 10.83 + 7.40 + 7.30 + 8.67 + 14.30 + 11.57 + 24.10 + 16.43 + 24.20 + 31.17 + 37.00 + 52.73 + 46.60 + 53.00 + 48.53 + 50.13 + 60.73 + 82.73 + 60.33 + 52.87 + 54.90 + 78.77 + 73.73 + 60.43 + 69.63 + 79.23 + 52.23 + 82.57 + 63.67 + 42.00 + 46.03 + 39.57 + 47.20 + 31.63 + 10.37 + 20.97 + 12.67 + 5.57 + 8.10 + 7.77 + 8.97 + 6.00 + 8.07 + 29.93 + 17.23 + 46.10 + 73.20 + 90.90 + 98.13 +126.33 +106.53 +154.83 +166.07 +135.97 +131.03 +120.17 +123.50 +119.57 + 86.87 + 82.67 + 95.27 + 56.73 +116.23 + 74.47 + 78.90 + 61.20 + 64.17 + 54.33 + 27.90 + 54.47 + 35.53 + 29.03 + 21.40 + 24.10 + 19.20 + 32.07 + 8.37 + 13.70 + 8.50 + 12.37 + 12.57 + 12.03 + 17.37 + 17.93 + 37.53 + 45.30 + 30.83 + 46.60 + 51.20 + 64.77 + 69.47 + 60.60 + 64.40 + 68.47 +117.90 +142.97 +126.50 +112.77 +124.03 +135.50 +128.30 + 88.07 + 79.80 + 89.17 + 83.33 + 58.57 + 62.30 + 62.27 + 81.83 + 60.77 + 53.80 + 61.63 + 65.33 + 55.73 + 39.77 + 55.67 + 40.57 + 40.77 + 43.27 + 31.50 + 18.70 + 23.87 + 18.97 + 20.80 + 13.70 + 6.27 + 1.17 + 5.63 + 1.93 + 3.90 + 4.97 + 6.47 + 8.77 + 18.57 + 27.17 + 36.40 + 43.80 + 41.40 + 64.03 + 70.00 + 87.20 + 87.93 +102.60 + 97.60 + 89.87 + 95.70 +103.07 + 94.53 + 80.33 + 81.13 + 80.13 + 67.13 + 57.07 + 67.37 + 67.50 + 44.47 + 57.13 + 45.07 + 34.27 + 39.60 + 57.03 + 44.73 + 46.00 + 40.03 + 42.50 + 32.50 + 28.73 + 18.17 + 31.53 + 15.67 + 9.77 + 8.20 + 3.30 + 3.17 + 6.53 + 16.10 + 19.27 + 31.47 + 36.87 + 62.77 + 57.83 + 84.43 + 73.13 + 80.57 +116.60 +157.20 +140.73 +141.30 +118.93 +133.20 + 97.80 + 94.93 + 96.00 +106.53 +104.33 + 99.50 + 97.33 + 56.30 + 60.73 + 50.57 + 57.13 + 38.27 + 52.37 + 30.83 + 23.30 + 21.50 + 9.83 + 13.43 + 19.97 + 3.00 + 11.30 + 10.80 + 15.00 + 17.20 + 9.73 + 7.70 + 5.90 + 4.13 + 1.80 + 1.90 + 0.53 + 4.47 + 8.10 + 10.90 + 23.50 + 25.70 + 45.33 + 34.43 + 47.03 + 51.87 + 62.83 + 55.50 + 60.43 + 68.37 + 47.83 + 61.80 + 50.10 + 63.30 + 59.73 + 81.40 + 88.63 + 64.60 + 56.93 + 43.87 + 54.80 + 70.57 + 52.03 + 30.43 + 37.70 + 33.83 + 22.87 + 7.30 + 9.23 + 14.20 + 17.37 + 11.40 + 9.20 + 6.40 + 4.90 + 6.50 + 5.33 + 4.37 + 12.17 + 3.00 + 3.67 + 2.57 + 12.43 + 9.53 + 15.37 + 36.63 + 48.53 + 41.97 + 64.87 + 75.17 + 80.23 + 71.50 + 71.23 + 87.57 + 98.57 + 82.97 + 73.37 + 93.90 + 80.73 + 64.03 + 63.83 + 71.97 + 58.13 + 61.93 + 46.13 + 40.17 + 44.50 + 36.43 + 33.03 + 20.77 + 32.50 + 18.67 + 34.97 + 20.87 + 25.07 + 25.97 + 15.60 + 14.13 + 8.27 + 10.43 + 10.53 + 14.43 + 6.97 + 5.90 + 2.37 + 5.33 + 0.77 + 2.50 + 5.97 + 1.40 + 3.60 + 9.23 + 12.93 + 19.00 + 22.60 + 43.00 + 31.10 + 41.47 + 46.30 + 48.93 + 65.70 + 45.43 + 62.27 + 80.47 + 47.10 + 58.73 + 69.13 + 40.47 + 81.77 + 45.30 + 63.00 + 58.07 + 33.93 + 48.83 + 72.30 + 39.10 + 56.53 + 30.30 + 32.57 + 56.13 + 26.43 + 14.30 + 17.27 + 16.33 + 6.73 + 9.23 + 3.83 + 3.00 + 1.73 + 4.33 + 4.27 + 4.03 + 1.90 + 0.30 + 1.03 + 2.53 + 2.83 + 11.30 + 8.60 + 15.63 + 34.70 + 47.70 + 63.57 + 43.50 + 55.90 + 71.33 + 44.60 + 56.43 + 80.47 +101.23 +134.57 + 99.30 + 77.83 + 72.20 + 96.40 + 75.87 + 64.70 + 83.70 + 62.80 + 43.23 + 58.40 + 28.93 + 27.67 + 35.57 + 28.83 + 29.43 + 27.50 + 18.77 + 30.97 + 8.27 + 7.37 + 10.37 + 3.10 + 6.13 + 5.73 + 8.13 + 2.47 + 18.70 + 24.17 + 21.53 + 15.57 + 40.67 + 45.53 + 75.47 + 68.07 + 58.77 + 58.23 + 70.47 + 81.40 + 77.23 + 59.03 + 58.50 + 80.80 + 83.00 + 90.50 + 56.90 + 60.63 + 60.97 + 56.80 + 81.03 + 50.07 + 34.60 + 26.30 + 31.93 + 29.23 + 23.70 + 16.47 + 15.50 + 11.30 + 17.10 + 6.80 + 9.37 + 14.87 + 3.77 + 2.70 + 1.30 + 5.17 + 12.57 + 7.20 + 9.93 + 20.73 + 28.40 + 35.37 + 59.63 + 71.40 + 66.50 + 71.77 +109.27 +114.97 +118.77 +127.83 + 96.03 +101.37 +108.63 +123.53 +104.67 + 74.10 +109.47 +105.33 + 66.10 + 64.40 + 66.33 + 79.83 + 60.57 + 45.50 + 40.70 + 64.27 + 39.47 + 47.53 + 32.37 + 18.37 + 24.13 + 22.90 + 15.93 + 14.20 + 12.27 + 5.07 + 2.60 + 12.00 + 18.70 + 17.57 + 32.93 + 34.47 + 47.40 + 70.13 + 78.03 +105.93 +115.93 +126.30 +171.67 +172.03 +136.03 + 96.47 +177.17 +147.80 +123.37 +152.97 +124.97 +131.63 +130.90 +102.03 +101.07 + 75.83 + 56.77 + 58.57 +100.67 + 68.53 + 49.93 + 28.47 + 29.63 + 40.80 + 26.73 + 13.47 + 20.70 + 17.13 + 4.10 + 3.87 + 0.93 + 4.90 + 7.93 + 16.27 + 23.97 + 36.70 + 74.87 +105.33 +121.30 +157.30 +182.90 +150.87 +180.17 +193.67 +234.70 +186.03 +180.93 +197.60 +173.80 +182.07 +168.00 +164.80 +120.13 +118.17 +117.27 +127.67 + 86.00 + 52.33 + 63.27 + 63.20 + 36.73 + 44.87 + 44.03 + 31.63 + 29.87 + 20.43 + 36.07 + 30.53 + 24.53 + 16.50 + 9.07 + 5.70 + 9.53 + 14.47 + 15.60 + 12.53 + 17.63 + 25.97 + 47.23 + 52.70 + 61.60 +105.43 + 74.43 + 91.83 +102.97 +108.63 +106.23 +107.53 +101.17 +120.23 +110.93 + 95.37 + 95.70 +114.07 +114.60 +101.67 + 88.43 + 77.00 + 59.70 + 64.20 + 65.70 + 76.67 + 77.23 + 72.43 + 49.40 + 44.10 + 46.53 + 36.00 + 25.97 + 24.97 + 38.60 + 43.20 + 30.87 + 13.97 + 8.50 + 27.27 + 12.10 + 11.43 + 14.47 + 10.60 + 13.70 + 16.07 + 23.33 + 31.83 + 38.70 + 74.00 + 92.50 + 88.90 +115.23 +147.37 +128.47 +163.33 +181.93 +146.93 +167.10 +142.23 +162.33 +130.27 +124.93 +156.60 +150.00 +142.87 +104.87 +110.83 +106.60 + 67.27 + 90.33 + 68.10 + 40.83 + 75.30 + 64.07 + 26.20 + 17.83 + 16.53 + 22.63 + 15.23 + 17.37 + 13.60 + 11.10 + 9.77 + 19.13 + 9.17 + 30.00 + 35.20 + 42.53 + 58.40 + 83.30 +115.17 +143.13 +152.60 +155.10 +157.50 +165.97 +149.37 +125.97 +158.30 +135.53 +148.77 +143.67 +158.43 +132.23 +139.27 + 79.60 + 71.37 + 87.70 + 73.37 + 57.77 + 40.83 + 46.97 + 41.67 + 20.63 + 27.77 + 29.40 + 28.40 + 14.70 + 13.53 + 13.37 diff --git a/plot/index.html b/plot/index.html new file mode 100644 index 0000000..ffbbe16 --- /dev/null +++ b/plot/index.html @@ -0,0 +1,16 @@ + + + + + +Interactive Wavelets in ION +
+ + + + + diff --git a/plot/make_waveplot b/plot/make_waveplot new file mode 100644 index 0000000..c7699ac --- /dev/null +++ b/plot/make_waveplot @@ -0,0 +1,4 @@ +#!/bin/sh -f +gcc -c util.c +gcc -c waveplot.c +gcc waveplot.c util.o -o waveplot.cgi diff --git a/plot/nino3sst.gif b/plot/nino3sst.gif new file mode 100644 index 0000000..60548dc Binary files /dev/null and b/plot/nino3sst.gif differ diff --git a/plot/util.c b/plot/util.c new file mode 100644 index 0000000..358f617 --- /dev/null +++ b/plot/util.c @@ -0,0 +1,152 @@ +#include+#include +#include +#include "util.h" + +#define LF 10 +#define CR 13 + +void getword(char *word, char *line, char stop) { + int x = 0,y; + + for(x=0;((line[x]) && (line[x] != stop));x++) + word[x] = line[x]; + + word[x] = '\0'; + if(line[x]) ++x; + y=0; + + while(line[y++] = line[x++]); +} + +char *makeword(char *line, char stop) { + int x = 0,y; + char *word = (char *) malloc(sizeof(char) * (strlen(line) + 1)); + + for(x=0;((line[x]) && (line[x] != stop));x++) + word[x] = line[x]; + + word[x] = '\0'; + if(line[x]) ++x; + y=0; + + while(line[y++] = line[x++]); + return word; +} + +char *fmakeword(FILE *f, char stop, int *cl) { + int wsize; + char *word; + int ll; + + wsize = 102400; + ll=0; + word = (char *) malloc(sizeof(char) * (wsize + 1)); + + while(1) { + word[ll] = (char)fgetc(f); + if(ll==wsize) { + word[ll+1] = '\0'; + wsize+=102400; + word = (char *)realloc(word,sizeof(char)*(wsize+1)); + } + --(*cl); + if((word[ll] == stop) || (feof(f)) || (!(*cl))) { + if(word[ll] != stop) ll++; + word[ll] = '\0'; + word = (char *) realloc(word, ll+1); + return word; + } + ++ll; + } +} + +char x2c(char *what) { + register char digit; + + digit = (what[0] >= 'A' ? ((what[0] & 0xdf) - 'A')+10 : (what[0] - '0')); + digit *= 16; + digit += (what[1] >= 'A' ? ((what[1] & 0xdf) - 'A')+10 : (what[1] - '0')); + return(digit); +} + +void unescape_url(char *url) { + register int x,y; + + for(x=0,y=0;url[y];++x,++y) { + if((url[x] = url[y]) == '%') { + url[x] = x2c(&url[y+1]); + if (url[x] == CR) x--; /*CT 11/7/97 get rid of Carriage Returns */ + y+=2; + } + } + url[x] = '\0'; +} + +void plustospace(char *str) { + register int x; + + for(x=0;str[x];x++) if(str[x] == '+') str[x] = ' '; +} + +int rind(char *s, char c) { + register int x; + for(x=strlen(s) - 1;x != -1; x--) + if(s[x] == c) return x; + return -1; +} + +int getline(char *s, int n, FILE *f) { + register int i=0; + + while(1) { + s[i] = (char)fgetc(f); + + if(s[i] == CR) + s[i] = fgetc(f); + + if((s[i] == 0x4) || (s[i] == LF) || (i == (n-1))) { + s[i] = '\0'; + return (feof(f) ? 1 : 0); + } + ++i; + } +} + +void send_fd(FILE *f, FILE *fd) +{ + int num_chars=0; + char c; + + while (1) { + c = fgetc(f); + if(feof(f)) + return; + fputc(c,fd); + } +} + +int ind(char *s, char c) { + register int x; + + for(x=0;s[x];x++) + if(s[x] == c) return x; + + return -1; +} + +void escape_shell_cmd(char *cmd) { + register int x,y,l; + + l=strlen(cmd); + for(x=0;cmd[x];x++) { + if(ind("&;`'\"|*?~<>^()[]{}$\\\x0A",cmd[x]) != -1){ + for(y=l+1;y>x;y--) + cmd[y] = cmd[y-1]; + l++; /* length has been increased */ + cmd[x] = '\\'; + x++; /* skip the character */ + } + } +} + diff --git a/plot/util.h b/plot/util.h new file mode 100644 index 0000000..eded336 --- /dev/null +++ b/plot/util.h @@ -0,0 +1,12 @@ + +void getword(char *word, char *line, char stop); +char *makeword(char *line, char stop); +char *fmakeword(FILE *f, char stop, int *cl); +char x2c(char *what); +void unescape_url(char *url); +void plustospace(char *str); +int rind(char *s, char c); +int getline(char *s, int n, FILE *f); +void send_fd(FILE *f, FILE *fd); +int ind(char *s, char c); +void escape_shell_cmd(char *cmd); diff --git a/plot/util.o b/plot/util.o new file mode 100644 index 0000000..f68c597 Binary files /dev/null and b/plot/util.o differ diff --git a/plot/wavemake.idl b/plot/wavemake.idl new file mode 100644 index 0000000..b484e64 --- /dev/null +++ b/plot/wavemake.idl @@ -0,0 +1,4 @@ +.compile waveplot +RESOLVE_ALL +SAVE,FILENAME='waveplot.sav',/ROUTINES,/VERBOSE +EXIT diff --git a/plot/waveopt.html b/plot/waveopt.html new file mode 100644 index 0000000..32dd788 --- /dev/null +++ b/plot/waveopt.html @@ -0,0 +1,220 @@ + + + Wave:Interactive Wavelets:Plot + + + ++ + + + diff --git a/plot/waveplot.c b/plot/waveplot.c new file mode 100644 index 0000000..2eea0c2 --- /dev/null +++ b/plot/waveplot.c @@ -0,0 +1,122 @@ +#include+
+ + ++ +# str0 = '' +# str2 = ' click here for postscript file
' +# IF (N_ELEMENTS(errors) GT 1) THEN FOR i=0,N_ELEMENTS(errors)-1 DO PRINTF,outf,errors(i) +# IF (N_ELEMENTS(errors) LE 1) THEN IF (postscript) THEN PRINTF,outf,str2 ELSE PRINTF,outf,str1 +
+# IF (N_ELEMENTS(errors) GT 1) THEN PRINTF,outf,'
+ +Fig. 1: (a) +# str1 = '.' +# IF (source NE '') THEN str1 = ' (from ' + source + ')' + str1 +# PRINTF,outf,'Time series' +# PRINTF,outf,' of ' + dataset1 + str1 + + +(b) The wavelet power spectrum. + +# str1 = 'The power has been scaled by the global wavelet spectrum (at right).' +# str2 = 'The contour levels are chosen so that 75%, 50%, 25%, and 5% of the wavelet power is above each level, respectively. +# IF (gws) THEN PRINTF,outf,str1 ELSE PRINTF,outf,str2 + +# str1 = 'Cross-hatched region is the cone of influence, where zero padding has reduced the variance.' +# IF (coi1) THEN PRINTF,outf,str1 + +# background_str = 'using a white-noise background spectrum' +# lag1_string = ' lag1=' + ROUND_ANY(lag1) +# IF (lag1 GT 0.0) THEN background_str = 'using a red-noise (autoregressive' + lag1_string + ') background spectrum' +# background_str = [background_str,'using the global wavelet spectrum as the background'] + +# str1 = 'Black contour is the '+ROUND_ANY(siglvl)+'% significance level, ' +# IF (siglvl NE 0) THEN PRINTF,outf,str1+background_str[do_global]+'.' + +# str1 = '(c) The global wavelet power spectrum +# str2 = ' (black line). The dashed line is the '+ROUND_ANY(siglvl)+'% significance level for the global wavelet spectrum, ' +# str2 = str2 + background_str[0] +# IF ((siglvl NE 0) AND (N_ELEMENTS(globalsignif) GT 1)) THEN str1 = str1 + str2 +# PRINTF,outf,str1+'.' + +# IF (N_ELEMENTS(errors) GT 1) THEN PRINTF,outf,'-->' ;comment out the caption + ++#ifndef NO_STDLIB_H +#include +#else +char *getenv(); +#endif +#include +#include +#include +#include +#include +#include +#include + +#define MAX_ENTRIES 2500 + +typedef struct { + char *name; + char *val; +} entry; + +char *makeword(char *line, char stop); +char *fmakeword(FILE *f, char stop, int *len); +char x2c(char *what); +void unescape_url(char *url); +void plustospace(char *str); + +FILE *infp,*outfp; + +main(int argc, char *argv[]) { + entry entries[MAX_ENTRIES]; + register int x,m=0; + int cl; + char data[255],filename[255],file2[255],dir[255],command[255],time_str[20]; + clock_t clocktime; + time_t curtime; + struct tm *loctime; + + printf("Content-type: text/html%c%c",10,10); + + curtime = time (NULL); /* Get the current time. */ + loctime = localtime (&curtime); /* Convert to localtime representation.*/ + strftime (time_str,20,"%H%M%S",loctime); /* Convert to string */ + +/* local directories */ + sprintf(dir, "/export/home/httpd/htdocs/research/wavelets/plot/"); + sprintf(filename, "out/wave_%s", getenv("REMOTE_HOST")); + + if(strcmp(getenv("REQUEST_METHOD"),"POST")) { + goto skip; +/* printf("This script should be referenced using "); + printf("Wavelet Plot.%c",10); + exit(1); +*/ + } + +/* not sure what this does... */ + if(strcmp(getenv("CONTENT_TYPE"),"application/x-www-form-urlencoded")) { + printf("This script can only be used to decode form results. \n"); + exit(1); + } + cl = atoi(getenv("CONTENT_LENGTH")); + +/* decode the form data */ + for(x=0;cl && (!feof(stdin));x++) { + m=x; + entries[x].val = fmakeword(stdin,'&',&cl); + plustospace(entries[x].val); + unescape_url(entries[x].val); + entries[x].name = makeword(entries[x].val,'='); + } + +/* read in options */ + if (strcmp(entries[1].name,"$dataset")==0) { + sprintf(command,"rm -f %s%s.opt",dir,filename); + system(command); + sprintf(file2,"%s%s.dat",dir,filename);} + else + sprintf(file2,"%s%s.opt",dir,filename); + +/* remove previous gif & postscript files */ + sprintf(command,"rm -f %s%s*.gif %s%s*.ps",dir,filename,dir,filename); + system(command); + +/* write out options */ + outfp = fopen(file2,"w"); + for(x=0; x <= m; x++) + fprintf(outfp,"%s\n%s\n",entries[x].name,entries[x].val); + fclose(outfp); + +skip: +/* construct IDL batch file */ + sprintf(file2,"%s%s.idl",dir,filename); + outfp = fopen(file2,"w"); + fprintf(outfp,"CATCH,error_status\n"); + fprintf(outfp,"IF (error_status NE 0) THEN EXIT\n"); + fprintf(outfp,"CD,'%s'\n",dir); + fprintf(outfp,"RESTORE,'waveplot.sav'\n"); + fprintf(outfp,".run waveplot\n"); + fprintf(outfp,"waveplot,'%s','%s'\n",filename,time_str); + fprintf(outfp,"EXIT\n"); + fclose(outfp); + +/* run IDL batch file */ + sprintf(command,"/usr/local/rsi/idl/bin/idl %s",file2); + system(command); + +/* read in HTML & dump to browser */ + sprintf(file2,"%s%s.html",dir,filename); + infp = fopen(file2,"r"); + (void) fgets(data,sizeof(data),infp); + while (!feof(infp)) { + printf("%s\n",data); + (void) fgets(data,sizeof(data),infp); + } + fclose(infp); + +/* automatically remove data & gif files more than 4 days old... */ + sprintf(command,"find %sout -name 'wave_*' -mtime +4 -exec rm {} \\;",dir); + system(command); + +} diff --git a/plot/waveplot.cgi b/plot/waveplot.cgi new file mode 100644 index 0000000..7cd5e3f Binary files /dev/null and b/plot/waveplot.cgi differ diff --git a/plot/waveplot.html b/plot/waveplot.html new file mode 100644 index 0000000..2e90759 --- /dev/null +++ b/plot/waveplot.html @@ -0,0 +1,98 @@ + + + + Wave:Interactive Wavelets:Choose data + + + + + + + diff --git a/plot/waveplot.pro b/plot/waveplot.pro new file mode 100644 index 0000000..13862cc --- /dev/null +++ b/plot/waveplot.pro @@ -0,0 +1,448 @@ +PRO waveplot,filename,time_str,TEST=test + + errors = [''] + '
*** ERROR ***'] + error_status = 0 + CATCH,error_status + IF (error_status NE 0) THEN BEGIN + errors = [errors,'[IDL] '+!ERR_STRING+'' + error_status = 0 + GOTO,oops + ENDIF + +;********************************************************** INITIALIZE + dataset = 'nino3sst' + mother = 'Morlet' + mother_old = '' + param = 6d + pad = 0b + coi = 0b + gws = 0b + tstart = -1E37 + tend = 1E37 + dj = 1./4 + oct = 10 +; lag1 = 0.0 + siglvl = 10 + do_global = 1 + title = ' ' + xtitle = 'Time' + ytitle = 'Period' + t_units = 'years' + eqn_string = '' + units = '' + data = FLTARR(4096) + dataset1 = '' + source = '' + printflag = 0 + do_color = 1b ; color + encapsulated = 0b ; PS or EPSF + window_size = [600,400] + test = KEYWORD_SET(test) + IF (test) THEN BEGIN + filename = 'test' + time_str = '' + ENDIF + +;********************************************************** READ DATAFILES + +;---------------------------------------------------------- Read user files + file_in = filename + flag = 0 + str = '' + number = '' + ON_IOERROR,skip + OPENW,2,'/tmp/wave' + FOR i=0,1 DO BEGIN + link = file_in + '.dat' + readfile = ([file_in+'.dat',filename+'.opt'])(i) + OPENR,1,readfile + READF,1,str + WHILE (str NE 'data') DO BEGIN + READF,1,number + IF (STRMID(str,0,1) EQ '$') THEN BEGIN + temp = number + str_exec = STRMID(str,1,79) + '=temp' + ENDIF ELSE str_exec = str + '=' + STRING(number) + r = EXECUTE(str_exec) + PRINTF,2,readfile+' '+str_exec + IF (EOF(1)) THEN GOTO,skip + READF,1,str + ENDWHILE + IF (i EQ 0) THEN READF,1,data +skip: + IF (STRTRIM(eqn_string,2) NE '') THEN BEGIN ; user-defined eqn + n = 2048 + pi = !PI + t = t0 + dt*FINDGEN(n) +; get rid of multiple statements + cutamp = STRPOS(eqn_string,'&') + IF (cutamp GT 0) THEN eqn_string = STRMID(eqn_string,0,cutamp-1) + r = EXECUTE('data = ' + eqn_string) + ENDIF + n = MAX(WHERE(data NE 0)) + 1 + IF (n EQ 0) THEN BEGIN ;---------------------- Read default data files + IF (flag) THEN BEGIN + errors=[errors,'[IDL] '+!ERR_STRING+''] + '
' + ON_IOERROR, NULL + GOTO,oops + ENDIF + flag = 1 ; should only reach this point once + file_in = 'data/' + dataset + i = -1 ; loop again to read in default.dat and user.opt + ENDIF + CLOSE,1 + ENDFOR +ON_IOERROR,NULL +CLOSE,2 + +;********************************************************** CALCULATE WAVELET + IF (N_ELEMENTS(s0) LT 1) THEN BEGIN + s0 = 2. + coi = 1b + pad = 1b + ENDIF + dj = 0.1 > dj < 1 + IF (dt LT 1E-9) THEN errors = [errors,'dt must be greater than 0.0'] + IF (n LT 5) THEN errors = [errors,'Dataset must have at least 5 points'] + + s0dt = s0*dt ; put back in the delta-t scaling + data = data(0:n-1) + data0 = data + data = data - TOTAL(data)/n ;*** remove the mean + variance = STDEV(data)^2 +; data = data/SQRT(variance) ;*** normalize by standard deviation + time = t0 + dt*FINDGEN(n) + coi1 = KEYWORD_SET(coi) ;*** save a copy + IF (mother_old NE mother) THEN dummy = TEMPORARY(param) ; use default + CASE (mother) OF + 'Morlet': BEGIN + IF (N_ELEMENTS(param) LT 1) THEN param = 6d ; default + param = 2d > param < 20d + param_str = ROUND_ANY(param,SIG=4) + END + 'Paul': BEGIN + IF (N_ELEMENTS(param) LT 1) THEN param = 4d ; default + param = 1d > FIX(param) < 20d + param_str = STRTRIM(FIX(param),2) + END + 'DOG': BEGIN + IF (N_ELEMENTS(param) LT 1) THEN param = 2d ; default + param = 1d > FIX(param) < 20d + param_str = STRTRIM(FIX(param),2) + END + ENDCASE + base2 = FIX(ALOG(n/s0)/ALOG(2) + 0.4999) + oct = 1 > oct < base2 + + IF (N_ELEMENTS(errors) GT 1) THEN BEGIN ;************ E R R O R ********** + errors = [errors,''] + '
' + GOTO,oops + ENDIF + + wave = WAVELET(data,dt, $ ;*** required inputs + S0=s0dt,OCT=oct,DJ=dj, $ ;*** optional inputs + PAD=pad,MOTHER=mother,PARAM=param, $ ;*** optional inputs + SCALE=scale,PERIOD=period,COI=coi) ;*** optional outputs + +;----------------------------------------------------- truncate data + time0 = time[0] + time1 = time[n-1] + IF (tstart EQ -1E37) THEN tstart = time0 + IF (tend EQ 1E37) THEN tend = time1 + tstart = tstart < time(n-5) + tend = time(4) > tend + keep = WHERE((time GE tstart) AND (time LE tend),n) + time = time(keep) + data = data(keep) + data0 = data0(keep) + wave = wave(keep,*) + coi = coi(keep) + +; construct power, global wavelet + power = ABS(wave)^2 + nt = N_ELEMENTS(time) + na = N_ELEMENTS(period) + global_ws = TOTAL(power,1)/nt + +; significance level + IF (N_ELEMENTS(lag1) LT 1) THEN BEGIN + lag1 = A_CORRELATE(data,[1,2]) + lag1 = (lag1(0) + SQRT(lag1(1)))/2. + lag1 = FIX(lag1*100. + 0.5)/100. + ENDIF + lag1 = (-1) > lag1 < 1 + IF (do_global) THEN BEGIN ; use GWS as background + fft_theor = global_ws + ENDIF ELSE BEGIN ; use AR1 as background + freq = dt/period ; normalized frequency + fft_theor = (1-lag1^2)/(1-2*lag1*COS(freq*2*!PI)+lag1^2) ; [Eqn(16)] + fft_theor = variance*fft_theor + ENDELSE + + siglvl = 0 > siglvl < 50 + signif = fft_theor*CHISQR_CVF((0>siglvl<50)/100.,2)/2. + +; check if normalized by GWS + IF (gws) THEN BEGIN + power = TEMPORARY(power)/REBIN(TRANSPOSE(global_ws),nt,na) + signif = signif/global_ws + levels = [0.5,1,2,3] + ENDIF ELSE BEGIN + p1 = power(SORT(power)) + n1 = N_ELEMENTS(p1) +; boxsize = [0.5,0.75,0.95] + boxsize = [0.25,0.5,0.75,0.95] + levels = [p1(boxsize*n1)] + ENDELSE + + labels = levels ; make a copy for MAKE_KEY + +;----------------------------------------------------- Global significance + IF (siglvl GT 0) THEN BEGIN + dof = n;-scale ;*** the -scale corrects for the edge effects + globalsignif = WAVE_SIGNIF(data,dt,scale,1, $ + DOF=dof,LAG1=lag1,SIGLVL=1.-(siglvl<50)/100., $ + MOTHER=mother,PARAM=param) + ENDIF + + + +;********************************************************** START PLOTTING + postscript = (printflag GT 0) + CASE (printflag) OF + 0: BEGIN + SET_PLOT,'Z' + DEVICE,Z_BUFFERING=0,SET_RESOLUTION=window_size + END + 1: BEGIN + SET_PLOT,'ps' + DEVICE,FILE=filename + time_str + '.ps', $ + BITS=8,/COLOR, $ + ISOLATIN=0, $ + /LANDSCAPE, $ + /INCHES,XSIZE=9,XOFFSET=1,YSIZE=6.5,YOFFSET=10 + DEVICE,FONT_INDEX=5,/HELV,/BOLD + END + 2: BEGIN + SET_PLOT,'ps' + DEVICE,FILE=filename + time_str + '.ps', $ + BITS=8,/COLOR, $ + ISOLATIN=0, $ + /ENCAPSULATED, $ + /INCHES,XSIZE=8,YSIZE=6 + DEVICE,FONT_INDEX=5,/HELV,/BOLD + END + ENDCASE + + LOADCT,42*do_color,/SILENT +; LOADCT,49,/SILENT + !P.BACKGROUND = 255b + !P.COLOR = 0 + !X.STYLE = 1 + !Y.STYLE = 1 + !P.FONT = -1 + postscript + !P.CHARSIZE = 0.8 + 0.2*postscript + !P.CHARTHICK = 1 - postscript + !X.TICKLEN = -0.03 + !Y.TICKLEN = -0.01 + + grid = ([1,5])(postscript) + yrange = [MAX(period),MIN(period)] + ytickv = 2.^(INDGEN(oct) + FIX(ALOG(MIN(period))/ALOG(2.))) + xtitle1 = xtitle + ytitle1 = ytitle + ytitle2 = 'Scale' + IF (N_ELEMENTS(dataset1) LT 1) THEN dataset1 = dataset + dataset2 = dataset1 + IF (STRLEN(t_units) GT 0) THEN BEGIN ;*** if "units", then tack onto labels + xtitle1 = xtitle1 + ' (' + t_units + ')' + ytitle1 = ytitle1 + ' (' + t_units + ')' + ytitle2 = ytitle2 + ' (' + t_units + ')' + ENDIF + IF (STRLEN(units) GT 0) THEN BEGIN ;*** if "units", then tack onto labels + dataset2 = dataset1 + ' (' + units + ')' + ENDIF + +;---------------------------------------------------------- Time Series Plot + !P.MULTI = 0 + pcolor = 16*do_color + pos1 = [0.1,0.7,0.7,0.945] + PLOT,time,data0, $ + XSTYLE=9,YSTYLE=9, $ + XRANGE=[tstart,tend], $ + XTITLE=xtitle1,YTITLE=dataset2,/NODATA,YMINOR=2,POSITION=pos1 + OPLOT,time,data0,THICK=1+postscript,COLOR=pcolor + dummy = PLOT_LABEL(0,0.75,/AFTER,NUMBER=1,TITLE=title) + +;---------------------------------------------------------- Wavelet Contour Plot + colors = BYTSCL(FINDGEN(N_ELEMENTS(levels)),TOP=200) + 48 + colors = [208,176,128,80] + IF (do_color) THEN colors = [64,144,180,240] + pos2 = [pos1(0),0.21,pos1(2),0.55] + + CONTOUR,power,time,period,/NOERASE, $ + XRANGE=[tstart,tend], $ + POSITION=pos2, $ + YRANGE=yrange,YSTYLE=1, $ + /YTYPE,/FILL,LEVELS=levels,C_COLORS=colors, $ + YTICKS=N_ELEMENTS(ytickv)-1,YTICKV=ytickv,YMINOR=1, $ + XTITLE=xtitle1,YTITLE=ytitle1 +; XGRIDS=grid,YGRIDS=grid,XTICKLEN=0.5,YTICKLEN=1 +; FIT_IN_WINDOW,postscript,ROTATE(SQRT(power),7),TOP=254,BOTTOM=48 + +;---------------------------------------------------------- signif level + IF (siglvl GT 0) THEN BEGIN + signif = power/REBIN(TRANSPOSE(signif),n,na) + CONTOUR,signif,time,period,/OVERPLOT,LEVEL=1.0,THICK=2+3*postscript + ENDIF + +;---------------------------------------------------------- COI + IF (coi1) THEN BEGIN + color = ([100,4])(do_color) + maxx = MAX(coi) > MAX(period) + POLYFILL,[time(0),time,MAX(time)],[maxx,coi,maxx], $ + ORIEN=+45,SPACING=0.5,COLOR=color,NOCLIP=0,THICK=1 + POLYFILL,[time(0),time,MAX(time)],[maxx,coi,maxx], $ + ORIEN=-45,SPACING=0.5,COLOR=color,NOCLIP=0,THICK=1 + PLOTS,time,coi,COLOR=color,NOCLIP=0,THICK=1 + xx=0.33 & yy=-0.07 + ENDIF + +;---------------------------------------------------------- WPS title + units_sqr = '' + IF (units NE '') THEN units_sqr = ' (' + units + ')!U2!N' +; variance_str = ROUND_ANY(variance,SIG=3) + units_sqr + IF (gws) THEN title1=' (normalized by global)' ELSE title1='' + dummy = PLOT_LABEL(0,1,/AFTER,NUMBER=2, $ + TITLE='Wavelet Power Spectrum'+title1) + +;---------------------------------------------------------- Make color key + pos3 = [pos2[0],pos2(1),pos2[2]-(pos2[2]-pos2[0])/3.,pos2(3)] + PLOT,[0,1],/NODATA,XSTYLE=5,YSTYLE=5,POSITION=pos3,/NOERASE + nlab = N_ELEMENTS(labels) + labels = [0.,labels] +; labels = ROUND_ANY(labels,SIG=2) +; labels(nlab-1) = ' ' + labels(nlab-1) + '!U !Ns!U2!N' + labels = STRING(DOUBLE(labels),FORMAT='(G9.2)') + FOR i=0,N_ELEMENTS(labels)-1 DO BEGIN + expo = STRPOS(labels[i],'E') + IF (expo GE 1) THEN BEGIN + num = STRMID(labels[i],0,expo) + expnt = FIX(STRMID(labels[i],expo+1,255)) + labels[i] = num + 'x10!U' + STRING(expnt) + '!N' + ENDIF + ENDFOR + labels = STRCOMPRESS(labels,/REMOVE_ALL) + colors = [!P.BACKGROUND,colors] +; IF (N_ELEMENTS(boxsize) GT 0) THEN extra = {BOXSIZE:[boxsize,1]-[0,boxsize]} + IF (gws) THEN units2=' (relative to global)' ELSE units2=units_sqr + MAKE_KEY,LABELS=labels,COLORS=colors,_EXTRA=extra, $ + TITLE='Power'+units2 + +;---------------------------------------------------------- Title + XYOUTS,0.84,0.9, $ + '!5INTERACTIVE WAVELET PLOT!X'+$ + '!C!CC. Torrence & G.P. Compo'+$ + '!C!Chttp://paos.colorado.edu/!Cresearch/wavelets/', $ + /NORMAL,ALIGN=0.5,CHARSIZE=0.8 + + +;********************************************************** PLOTTING GLOBAL + pos4 = [0.74,pos2(1),0.95,pos2(3)] + blank = REPLICATE(' ',29) + + PLOT,global_ws,period,/NOERASE, $ + XSTYLE=4,YSTYLE=9, $ + /XTYPE, $ + XTICK_GET=xtick_get, $ + YRANGE=yrange,/YTYPE, $ + YTICKS=N_ELEMENTS(ytickv)-1,YTICKV=ytickv,YTICKNAME=blank, $ + YTICKLEN=-0.02, $ + POSITION=pos4, $ + THICK=2+2*postscript +; xtickname = ROUND_ANY(DOUBLE(xtick_get),SIG=2) + xtickname = STRING(DOUBLE(xtick_get),FORMAT='(G9.2)') + FOR i=0,N_ELEMENTS(xtickname)-1 DO BEGIN + expo = STRPOS(xtickname[i],'E') + IF (expo GE 1) THEN BEGIN + num = STRMID(xtickname[i],0,expo) + expnt = FIX(STRMID(xtickname[i],expo+1,255)) + xtickname[i] = '10!U' + STRING(expnt) + '!N' + ENDIF + ENDFOR + xtickname = STRCOMPRESS(xtickname,/REMOVE_ALL) + AXIS,XAXIS=0,XTICKNAME=xtickname, $ + XTITLE='Variance'+units_sqr + IF ((siglvl GT 0) AND (N_ELEMENTS(globalsignif) GT 1)) THEN BEGIN + OPLOT,globalsignif,period, $ + COLOR=208*do_color, $ + LINES=2-postscript, $ + NOCLIP=0 + ENDIF + dummy = PLOT_LABEL(0,1,/AFTER,NUMBER=3,TITLE='Global Wavelet') + +;********************************************************** PLOTTING MOTHER + I = COMPLEX(0,1) + t0 = (DINDGEN(101)-50)/10. + pname = 'm' + CASE (mother) OF + 'Morlet': BEGIN + psi = EXP(I*param*t0)*EXP(-t0^2/2) + pname = 'k!D0!N' + END + 'Paul': BEGIN + psi = (1-I*t0)^(-param+1) + END + 'DOG': BEGIN + sw = 8*2*!DPI*DINDGEN(101)/100d + psi = FLOAT(FFT(-I^param*(sw^param)*EXP(-sw^2/2),1,/DOUBLE)) + psi = [psi[50:*],psi[0:49]] + END + ENDCASE + keep = WHERE(ABS(psi) GE 0.001*MAX(ABS(psi))) + t0 = t0[keep] + psi = psi[keep] + psiReal = FLOAT(psi) + psiImag = IMAGINARY(COMPLEX(psi)) + mn = MIN([psiReal,psiImag],MAX=mx) + + PLOT,t0,psiImag,/NOERASE,LINES=1, $ + XSTYLE=5,YSTYLE=5, $ + /NOCLIP, $ + YRANGE=[mn,mx], $ + POSITION=[pos2[2]-(pos2[2]-pos2[0])/4.,0.02,pos2[2],pos2[1]-0.06] +; OPLOT,t0,psiImag,LINES=1,COLOR=!P.BACKGROUND + OPLOT,t0,psiReal + title1 = '' + IF (MAX(ABS(psiImag)) GT 0) THEN title1='!C !Dsolid=Real, dashed=Imaginary' + XYOUTS,MAX(t0),0,' ' + mother + ' ' + $ + pname + '=' + param_str + title1,/NOCLIP + + +oops: + CATCH,error_status + IF (error_status NE 0) THEN EXIT + +;********************************************************** OUTPUT OPTIONS .html + OPENR,1,'waveopt.html' + outf = 2 + OPENW,outf,filename + '.html' + WHILE NOT EOF(1) DO BEGIN + READF,1,str + CASE (STRMID(str,0,1)) OF + '#': r = EXECUTE(STRMID(str,1,255)) + ELSE: PRINTF,outf,str + ENDCASE + ENDWHILE + CLOSE,/ALL + +;********************************************************** OUTPUT .gif FILE + IF (N_ELEMENTS(errors) LT 2) THEN BEGIN + IF (postscript) THEN BEGIN + DEVICE,/CLOSE + ENDIF ELSE BEGIN + image1 = TVRD() + WRITE_GIF,filename + time_str + '.gif',image1 + ENDELSE + ENDIF +END diff --git a/plot/waveplot.sav b/plot/waveplot.sav new file mode 100644 index 0000000..26d56b4 Binary files /dev/null and b/plot/waveplot.sav differ diff --git a/plot/waveploteqn.html b/plot/waveploteqn.html new file mode 100644 index 0000000..ce112cf --- /dev/null +++ b/plot/waveploteqn.html @@ -0,0 +1,103 @@ + + +
+Wave:Interactive Wavelets:Choose data + + + + + + +