**Next message:**David Ian Brown: "Re: Reading HDF Radar Images"**Previous message:**MUHTARJAN osman: "Power Spectrum"**Maybe in reply to:**MUHTARJAN osman: "Power Spectrum"**Next in thread:**Dennis Shea: "Re: Power Spectrum"**Messages sorted by:**[ date ] [ thread ] [ subject ] [ author ]

*> Could anyone tell me how the power spectrum is calculated in the
*

*>function specx_anal€¯?
*

*>
*

--- NCL usees FFTPACK to compute fourier info. The documentation for the forward fft is at: ftp://ftp.ucar.edu/dsl/lib/fftpack/ezfftf.f ---[1] detrend the series [optional] [2] taper the series [optional] [3] calculate the variance of the detrended/tapered series [4] forward fft on series [5] square the coef [periodogram ~2 dof] [6] smooth the periodogram estimates [7] normalize [6] so that the area under the curve is equal to the variance calculated in [3]

area_under_curve = SUM { S(f)*df*frac } where frac=1.0 except at the beginning and end values where frac=0.5 ====================

> If my understanding based on the manual is right, the power spectrum >should be return to the array > My concern is if spcx=|F(w)| or spcx= |F(w)|^2. or >spcx=(|F(w)|^2) / (N^2) ? Here F(w) is the Fourier Transform of x(t), | | means absolute value, N is the length of the F(w). > Neither ... The returned apc estimates have been normailized to get the area under the curve. FYI: The documentation for the forward fft is at: ftp://ftp.ucar.edu/dsl/lib/fftpack/ezfftf.f ---

You could do the above in NCL in a step-by-step process:

======================================================== In the last few days, I have been twice asked how NCL's specx_anal "works". It is pretty basic and for the most part can be well simulated by use of several of NCL's built-in functions.

[a] input a series x[*] with no missing values. [b] remove the mean an, optionally, detrend the series. http://ngwww.ucar.edu/ngdoc/ng/ref/ncl/functions/dtrend.html [c] taper the result of [b] http://ngwww.ucar.edu/ngdoc/ng/ref/ncl/functions/taper.html [d] Calculate the variance of [c] [d] perform an FFT [ezfftf] on [c] http://ngwww.ucar.edu/ngdoc/ng/ref/ncl/functions/fft.html [e] square the real (rc) and imaginary (ic) coef from [d]. This gives the periodogram. periodogram = rc^2 + ic^2 ; array syntax The periodgram has a bandwidth of 1/N (=df [delta_frequency]) but no statistical significance. [f] perform a running average over the periodogram values using either runave or wrunave. This creates a spectrum. http://ngwww.ucar.edu/ngdoc/ng/ref/ncl/functions/runave.html http://ngwww.ucar.edu/ngdoc/ng/ref/ncl/functions/wrunave.html A runave of say 5 pts creates a bandwidth of 5*df [approx] and approx 10 degrees of freedom. [g] normalize the area under the curve [f] to the input variance. Remember the first and last bandwidths are only 0.5*df. The numbers will not match 'spec_anal' exactly but should be very close. ++++++++++++++++++++++++++++++++++++++++++++++++++ good luck D

_______________________________________________ ncl-talk mailing list ncl-talk@ucar.edu http://mailman.ucar.edu/mailman/listinfo/ncl-talk

**Next message:**David Ian Brown: "Re: Reading HDF Radar Images"**Previous message:**MUHTARJAN osman: "Power Spectrum"**Maybe in reply to:**MUHTARJAN osman: "Power Spectrum"**Next in thread:**Dennis Shea: "Re: Power Spectrum"**Messages sorted by:**[ date ] [ thread ] [ subject ] [ author ]

*
This archive was generated by hypermail 2b29
: Sun May 08 2005 - 22:05:31 MDT
*