<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div><br><br>Sent from my iPhone</div><div><br>Begin forwarded message:<br><br></div><blockquote type="cite"><div><b>From:</b> Nai Suan <<a href="mailto:shif422@gmail.com">shif422@gmail.com</a>><br><b>Date:</b> December 27, 2017 at 8:40:34 AM EST<br><b>To:</b> Dennis Shea <<a href="mailto:shea@ucar.edu">shea@ucar.edu</a>><br><b>Subject:</b> <b>Re: [ncl-talk] The question about the complex demodulation</b><br><br></div></blockquote><blockquote type="cite"><div><meta http-equiv="Content-Type" content="text/html; charset=utf-8">Dear Dennis Shea,<div class=""><span class="Apple-tab-span" style="white-space:pre">  </span>Thank you for your information.</div><div class=""><span class="Apple-tab-span" style="white-space:pre">   </span>I guess that I found the real answer.</div><div class=""><span class="Apple-tab-span" style="white-space:pre">     </span>1) you are right. The calculation of the ‘frqdem’ is wrong in NCL example. The right formula is freqdem = 1/11 ; (1/central_period)</div><div class=""><span class="Apple-tab-span" style="white-space:pre">   </span>2) The real reason of the difference between NCL and Bloomfield(2000) is the use of the function ‘unwrap’. In Bloomfield (2000), the phase angles are corrected to produce the smoother phase. I used the ‘unwrap’ function in matlab (<a href="https://www.mathworks.com/help/matlab/ref/unwrap.html" class="">https://www.mathworks.com/help/matlab/ref/unwrap.html</a>).</div><div class=""><span class="Apple-tab-span" style="white-space:pre">       </span>Thank you again for your help.</div><div class=""><span class="Apple-tab-span" style="white-space:pre">    </span>All the best,</div><div class="">Feng<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Dec 21, 2017, at 5:12 AM, Dennis Shea <<a href="mailto:shea@ucar.edu" class="">shea@ucar.edu</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class="">Hello,<br class=""><br class=""></div><div class="">I am going on vacation over the Christmas holidays. <br class=""><br class=""></div><div class="">The following is <b class="">offline from ncl-talk. </b><br class="">-----------------------------------------------------------------------------<br class="">Maybe you can do some investigation on your own<b class="">?<br class=""><br class=""></b></div><div class="">Any tool can be used to performdemodulation.<br class="">Other tools offer demodulation as a function or via examples:<b class=""><br class=""><br class=""></b>Matlab: <a href="http://www.mathworks.com/help/signal/ref/demod.html" class="">http://www.mathworks.com/help/signal/ref/demod.html</a><br class="">R:          <a href="https://gist.github.com/mike-lawrence/8565774" class="">https://gist.github.com/mike-lawrence/8565774</a><b class=""><br class=""></b></div><div class="">Python:<b class=""> </b><a href="https://currents.soest.hawaii.edu/ocn760_4/_static/complex_demod.html" class="">https://currents.soest.hawaii.edu/ocn760_4/_static/complex_demod.html</a><br class=""></div><div class="">IDL:       <a href="https://github.com/callumenator/idl/blob/master/external/Harris/demod.pro" class="">https://github.com/callumenator/idl/blob/master/external/Harris/demod.pro</a><br class=""></div><div class=""><br class=""></div><div class="">The R example is similar to NCL except it uses a Butterworth low-pass filter rather than a Lanczos filter.<br class=""></div><div class=""><b class=""><br class=""></b></div><div class="">Unfortunately, most 'demodulation' are described using electrical engineering/communications terminology.<br class=""></div><div class=""><b class="">========<br class=""></b></div><div class=""><br class="">The steps for complex demodulation about a specific demodulation frequency ('frqdem' , 'omega=2*pi*frqdem) follow. <br class=""></div><div class="">I have attached all the fortran codes from the book:  demoddriver actually calls the appropriate subroutines.<br class=""></div><div class=""><br class="">----<br class=""></div><div class="">Bloomfield's program does <b class="">detrend </b>the sunspot series. <br class="">In NCL, this is left up to the user.   I doubt very much that this has any significant effect.<br class=""><br class="">The main computational parts are:<br class=""></div><div class=""><br class=""></div>(a) Calculate the real & imaginary compoments.<br class="">Technically, a time series is multiplied by a complex exponential at the demodulation frequency. Bloomfield's fortran code:<br class=""><br class="">     do i=1,n<br class="">         arg   = (i-1)*omega<br class="">         d1(i) =  x(i)*cos(arg)*2<br class="">         d2(i) = -x(i)*sin(arg)*2<br class="">      end do<br class=""><br class=""></div>(b) A low-pass filter is applied independently to the real and imaginary components from (a). <br class=""></div><div class="">Bloomfield uses "least squares lopass filter using convergence factors.<br class=""><br class="">          subroutine lopass(x,n,cutoff,ns)    <br class=""><br class=""></div>(c) Calculate the amplitudes and phases using the <b class="">smoothed </b>values from (b). An excerpt from Bloomfield's fortran code:<br class=""><br class="">      do i=1,n<br class="">         amp = sqrt(x(i)*x(i)+y(i)*y(i))<br class="">         phi = atan2(y(i),x(i))        ! radians<br class="">         x(i)= amp<br class="">         y(i)= phi<br class="">      end do<br class="">------------------------------<wbr class="">------------------------------<wbr class="">------------------------------<wbr class="">------------------------------<wbr class="">------------------<br class=""></div><div class="">Parts (a) and (c) are straightforward. NCL uses <b class="">array syntax </b>rather than 'do' loops. SPecifically:<br class=""><br class="">   arg = ispan(0,ny-1,1)*frqdem*2*pi<br class="">   ARG = conform(y, arg, ndim)     ; all dimensions<br class="">                                   ; complex demodulate <br class="">   yr  =  y*cos(ARG)*2             ; 'real' series<br class="">   yi  = -y*sin(ARG)*2             ; 'imaginary'       <br class="">---<br class=""></div><div class="">   lanczos<br class=""><br class="">;---Calculate the amplitudes and phases  (really, no need for <b class="">where</b> function<br class="">   amp = sqrt(yr^2 + yi^2)<br class="">   pha = where(amp.eq.0,  0, atan2(yi, yr))  ; pha = atan2(yi,yr)<br class=""><br class=""></div><div class=""> I am sure that lanczos. Also, in my example, I<b class=""> set frqdem=1.0/22  ... It should be 1.0/11</b><br class=""></div><div class=""><br class=""></div>Originally, I tried to use 'subroutine lopass'. However, Bloomfield read several constants from a file. The values of these constants are not available (near as I can tell). The descriptions are:<br class=""> <br class=""></div>c     np2 - a power of 2<br class=""></div>c     nom - (np2/2*pi)*omega<br class=""></div>c     npa  -  (np2/2*pi) times the pass frequency of the filter<br class="">c     nst   -  (np2/2*pi) times the stopfrequency of the filter<br class=""><br class=""></div>These are used to calculate assorted quantities earlier in the program:<br class=""><br class=""></div>  omega = 2*pi*float(nom)/float(np2)<br class=""></div>  cutoff   = pi*float(npa+nst)/float(np2)<br class=""></div>  ns        = np2/(nst-npa)<br class=""><div class=""><br class=""><div class=""><div class="">I had to guess at 'np2'. <br class=""><br class=""></div><div class="">Anyway, the calculated values returned by 'lopass' were just not realistic. <br class=""></div><div class="">As a result, I decided to use NCL's lanczos filter. <br class=""><br class=""><a href="https://www.ncl.ucar.edu/Document/Functions/Built-in/filwgts_lanczos.shtml" target="_blank" class="">https://www.ncl.ucar.edu/<wbr class="">Document/Functions/Built-in/<wbr class="">filwgts_lanczos.shtml</a><br class=""><br class=""></div><div class="">I am sure the filter works fine. What should 'fca' and 'fcb' be set to? I used ihp=0 (lowpass), <br class=""><br class=""></div><div class="">I have attached 2 tests.<br class=""><br class=""></div><div class="">[1] <br class=""><br class="">%> ncl aTEST.ncl  <br class=""><br class=""></div><div class="">Basically, the same code as on the website. NCL automatically loads all the pertinent libraries. Still, I have explicitly included the 6.4.0 'demod_cmplx' function.<br class=""></div><div class="">      ihp    = 0   ; low pass<br class=""><br class=""></div><div class="">      fcb    = totype(-999, typeof(pi))<br class="">      wgt    = filwgts_lanczos (nwt, ihp, frqcut, fcb, nsigma)     ; nwt=41<br class="">     ;wgt    = filwgts_lanczos (nwt, ihp, frqdem, fcb, nsigma)  <br class=""><br class=""><br class=""></div><div class="">[2] bTest.ncl<br class=""><br class=""></div><div class="">This uses Bloomfield's fortran code via a shared object. See: <b class=""><a href="https://www.ncl.ucar.edu/Document/Tools/WRAPIT.shtml" class="">https://www.ncl.ucar.edu/Document/Tools/WRAPIT.shtml</a><br class=""></b><br class=""></div><div class="">&> <br class=""><br class="">WRAPIT demod_ncl.f<br class=""><br class=""></div><div class="">%> bTEST.ncl<br class=""><br class=""><br class=""></div><div class=""><br class=""><br class=""></div><div class=""><br class=""><br class=""></div></div></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Wed, Dec 20, 2017 at 12:46 AM, Nai Suan <span dir="ltr" class=""><<a href="mailto:shif422@gmail.com" target="_blank" class="">shif422@gmail.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space" class="">Dear Dennis Shea,<div class=""><span class="m_-8811402693050074741Apple-tab-span" style="white-space:pre-wrap">    </span>Sorry to disturb you again.</div><div class=""><span class="m_-8811402693050074741Apple-tab-span" style="white-space:pre-wrap">    </span>Do you have any idea to explain the difference of phases in Bloomfield’s book and NCL example?</div><div class=""><span class="m_-8811402693050074741Apple-tab-span" style="white-space:pre-wrap">       </span>Merry Christmas!</div><div class=""><span class="m_-8811402693050074741Apple-tab-span" style="white-space:pre-wrap">       </span>All the best,</div><div class="">Frank<div class=""><div class="h5"><br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Dec 17, 2017, at 10:47 AM, Nai Suan <<a href="mailto:shif422@gmail.com" target="_blank" class="">shif422@gmail.com</a>> wrote:</div><br class="m_-8811402693050074741Apple-interchange-newline"><div class=""><div style="word-wrap:break-word;line-break:after-white-space" class="">Dear Dennis Shea,<div class=""><span class="m_-8811402693050074741Apple-tab-span" style="white-space:pre-wrap">      </span>Thank you for your huge effect.</div><div class=""><span class="m_-8811402693050074741Apple-tab-span" style="white-space:pre-wrap">        </span>I agree with you, a minus sign does not affect the amplitude but affect the phase.</div><div class=""><br class=""></div><div class=""><span class="m_-8811402693050074741Apple-tab-span" style="white-space:pre-wrap">      </span>If I understand well, you gave me two reasons to explain the difference of the phases in the Bloomfield’s book and the NCL example.</div><div class=""><span class="m_-8811402693050074741Apple-tab-span" style="white-space:pre-wrap">  </span>1) you show that the ‘atan2' or ‘atan’ functions may effect the phase plot. I do not agree with you. It can not be resolved the ‘jump’ in the phase plot.</div><div class=""><span class="m_-8811402693050074741Apple-tab-span" style="white-space:pre-wrap">    </span>2) you think that the different lowpass filters may be a reason. I do not agree with you too. I have used eight filter methods to carry out the complex demodulation. The results show that the filter method can slightly affect the amplitude and phase, but the filter method can not be used to explain the ‘jump’ in phase plot.</div><div class=""><br class=""></div><div class=""><span class="m_-8811402693050074741Apple-tab-span" style="white-space:pre-wrap">       </span>Anyway, there is no an obvious difference in amplitude plot between Bloomfield’s book and NCL example. My question still focus on the differences of phases using the complex demodulation between Bloomfield’s book and NCL example. How to explain the huge and obvious differences? In a word, How to deal with the obvious ‘jump’ in NCL example? The NCL code ‘demod_cmplx_nai’ can not deal with the ‘jump’ too.</div><span class=""> <br class=""></span><span class=""><span class="m_-8811402693050074741Apple-tab-span" style="white-space:pre-wrap">    </span>You implied that a 'fancy' with the phase plot in Bloomfield’s book? Do you know or guess what technique Bloomfield did to deal with "a non-pretty jump”? I agree that Bloomfield used a technique to show only 4 degrees difference from 358 degrees to 2 degrees, but the technique does not include in the two Fortran subroutines which you sent to me. Do you have any idea to reproduce the phase plot in Bloomfield’s book?<br class=""></span><div class=""><span class="m_-8811402693050074741Apple-tab-span" style="white-space:pre-wrap">  </span>All the best,</div><div class="">Frank</div><div class=""><br class=""></div><div class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Dec 15, 2017, at 9:56 PM, Dennis Shea <<a href="mailto:shea@ucar.edu" target="_blank" class="">shea@ucar.edu</a>> wrote:</div><br class="m_-8811402693050074741Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><div class=""><div class=""><div class="">This is a rather long and, perhaps, confusing response. It was written episodically.<br class=""><br class="">---<br class="">re: <b class="">"same mistake" </b>   .... I am not sure to what you are referring. The use of a minus sign?<br class=""><br class=""></div><div class="">The minus sign does not affect the amplitudes because the quantities are squared:  amp = sqrt(x*x+y*y)<br class=""></div><div class="">It does affect the phase. Also, use of <b class="">atan2 </b>or <b class="">atan </b>to determine the phase are other issues to consider.<br class=""><b class=""><br class=""></b><a href="https://www.ncl.ucar.edu/Document/Functions/Built-in/atan2.shtml" target="_blank" class="">https://www.ncl.ucar.edu/<wbr class="">Document/Functions/Built-in/<wbr class="">atan2.shtml</a><b class=""><br class=""></b><a href="https://www.ncl.ucar.edu/Document/Functions/Built-in/atan.shtml" target="_blank" class="">https://www.ncl.ucar.edu/<wbr class="">Document/Functions/Built-in/<wbr class="">atan.shtml</a><b class=""><b class=""><br class=""></b></b></div><div class=""><br class=""></div>PMEL:   <a href="https://www.pmel.noaa.gov/maillists/tmap/ferret_users/fu_2007/pdfHMANlJLqCE.pdf" target="_blank" class="">https://www.pmel.noaa.gov/mail<wbr class="">lists/tmap/ferret_users/fu_<wbr class="">2007/pdfHMANlJLqCE.pdf</a><br class=""></div>Kessler: <a href="https://faculty.washington.edu/kessler/generals/complex-demodulation.pdf" target="_blank" class="">https://faculty.washington.edu<wbr class="">/kessler/generals/complex-demo<wbr class="">dulation.pdf</a><br class=""><br class=""></div><div class="">PMEL references the same source as NCL.<br class="">Reference: Bloomfield, P. (1976). Fourier Decomposition of Time Series, An Introduction. Wiley, New York, 258pp.</div><div class=""><br class="">===<br class=""></div>I have attached the (slightly updated) fortran subroutines from Bloomfield  but will include here also::<br class="">     <b class="">demod_bloom1976 </b>(page 148)  <br class="">     <b class="">polar_bloom1976</b> (page 150)<br class=""><br class=""> ---------------------------<br class="">      subroutine <b class="">demod_bloom1976</b>(x,n,omega,d1,d<wbr class="">2)<br class="">      implicit none<br class="">c<br class="">c Fourier Analysis of Time Series: An Introduction<br class="">c P. Bloomfield (1976: Wiley); <b class="">p148</b><br class="">c Minor code changes to make code more 'modern'<br class="">c<br class="">      integer n                        ! INPUT<br class="">      real    x(n), omega, d1(n), d2(n)<br class="">      integer i                        ! LOCAL<br class="">      real    arg<br class=""><br class="">      do i=1,n<br class="">         arg   = (i-1)*omega<br class=""><b class="">         d1(i) =  x(i)*cos(arg)*2<br class="">         d2(i) = -x(i)*sin(arg)*2</b><br class="">      end do<br class=""><br class="">      return<br class="">      end<br class="">c ---------------------------<br class="">      subroutine <b class="">polar_bloom1976</b>(x,y,n)<br class="">      implicit none<br class="">c<br class="">c Fourier Analysis of Time Series: An Introduction<br class="">c P. Bloomfield (1976: Wiley); <b class="">p150</b><br class="">c Minor code changes to make code more 'modern'<br class="">c<br class="">      integer n                        ! INPUT<br class="">      real    x(n), y(n)<br class="">      integer i                        ! LOCAL<br class="">      real    amp, phi<br class=""><br class="">      do i=1,n<br class=""><b class="">         amp = sqrt(x(i)*x(i)+y(i)*y(i))<br class="">         phi = atan2(y(i),x(i))        </b>! radians<br class="">         x(i)= amp<br class="">         y(i)= phi<br class="">      end do<br class=""><br class="">      return<br class="">      end<br class="">c ---------------------------<br class="">c Bloomfield CALL SEQUENCE <br class="">c<br class="">c omega  = (2*pi*nom)/np2<br class="">c cutoff = (pi*(npa+nst))/np2<br class="">c ns     = np2/(nst-npa)<br class="">c call demod_bloom1976 (x,n,omega,d1,d2) ! DEMODULATION<br class="">c call lopass_bloom1976(d1,cutoff,ns)<wbr class="">    ! SMOOTH COSINE TERM<br class="">c call lopass_bloom1976(d2,cutoff,ns)<wbr class="">    ! SMOOTH SINE TERM<br class="">c lim = n-2*ns<br class="">c call polar_bloom1976(d1,d2,lim)    <wbr class="">    ! AMPLITUDE & PHASES<br class="">==============================<wbr class="">=<br class=""></div><div class=""><b class="">Bloomfield's book uses a different low-pass filter than NCL (Lanczos) so results are not directly ('exactly') comparable.</b><br class="">==============================<wbr class="">=<br class=""></div><div class="">NCL's  (attached) <b class="">demod_cmplx</b> uses array notation (no 'do' loops):<br class=""><br class="">...<br class="">   yr  =  y*cos(ARG)*2             ; 'real' series<br class="">   yi  = <b class="">-</b>y*sin(ARG)*2              ; 'imaginary'   <br class="">...<br class="">   wgt    = filwgts_lanczos (nwt, ihp, frqcut, fcb, nsigma)  <br class=""><br class="">;---Apply filter weights to raw demodulated series (nwt/2 point 'lost; at start/end)<br class=""><br class="">   yr = wgt_runave_n_Wrap ( yr, wgt, 0, 0) <br class="">   yi = wgt_runave_n_Wrap ( yi, wgt, 0, 0) <br class="">  <br class="">;---Use the low pass filtered values; <b class="">atan2 </b>uses y/x => yi/yr<br class="">   <br class="">   amp  = sqrt(yr^2 + yi^2)<br class="">   pha  = where(amp.eq.zero, zero, <b class="">atan2</b>(yi, yr))    ; primary phase (radians)<br class=""><br class="">   pha2 = conform(pha, zero, -1)                     ; secondary phase (Bloomfield)<br class="">   pha2 = where(pha.ge.zero, pha-pi2, pha+pi2)   <br class=""><br class="">==============================<wbr class="">====<br class=""></div><div class="">You could take NCL's attached '<b class="">demod_cmplx</b>'; copy it to create your own function (say): <b class="">demod_cmplx_nai<br class=""><br class=""></b></div><div class="">and change what you want .... for example.... remove the minus sign<br class=""><br class="">   yr  =  y*cos(ARG)*2             ; 'real' series<br class="">   yi  =   y*sin(ARG)*2              ; 'imaginary'   </div><div class=""><b class=""></b></div><div class=""><b class=""><br class=""></b></div><div class="">Play with it.<br class=""><br class="">==============================<wbr class="">====<br class=""></div><div class="">I did not do anything 'fancy' with the phase plot. Hence, there can be 'jumps' . Think 358 degrees to 2 degrees. 'We' know it is only 4 degrees different but the plotting does not. Hence, a non-pretty jump in the plot.<br class=""><br class="">==============================<wbr class="">=====<br class=""></div><div class="">Archived National Institute of Standards fortran software.   <br class=""></div><div class=""><br class=""></div><div class=""><b class="">DEMODU.f</b>  (attached): Does the same thing as Bloomfield/NCL. <br class="">The use af AMPL and PHAS names is because this was part of a larger library that reused array space.<br class=""><br class=""></div><div class="">The following <br class=""></div><div class=""><br class=""><a href="http://www.itl.nist.gov/div898/software/datapac/DEMOD.f" target="_blank" class="">http://www.itl.nist.gov/div898<wbr class="">/software/datapac/DEMOD.f</a><br class=""><br class=""></div><div class="">uses <br class=""><br class="">      Y1(I)=X(I)*COS(6.2831853*F*AI)<br class="">      Y2(I)=X(I)*SIN(6.2831853*F*AI)<br class=""><br class=""></div><div class="">but then for phases uses <b class="">atan </b>(not <b class="">atan2</b>)<b class=""><br class=""><br class=""></b>      Z(I)=<b class="">ATAN</b>(Y1(I)/Y2(I))<b class="">     </b>!  atan(yr/yi)<b class="">  ... ?</b>implicitly handles - sign?<br class=""><b class=""><br class=""></b></div><div class="">I am done.<br class=""><br class=""></div><div class="">Cheers <br class=""></div><div class="">D<b class=""><br class=""></b></div><div class=""><br class=""></div><div class=""><br class=""><br class=""><br class=""><div class=""><br class=""><div class=""><div class=""><br class=""><br class=""></div></div></div></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Wed, Dec 13, 2017 at 8:31 AM, Nai Suan <span dir="ltr" class=""><<a href="mailto:shif422@gmail.com" target="_blank" class="">shif422@gmail.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear Dennis Shea,<br class="">
        I found a same mistake in two documents Kessler: U. Washington: Complex Demodulation and PMEL: Complex Demodulation. The first formula should be conected by a ‘plus’ sign not ’minus’ sign.<br class="">
        All the best,<br class="">
Feng<br class="">
<div class="m_-8811402693050074741HOEnZb"><div class="m_-8811402693050074741h5"><br class="">
<br class="">
<br class="">
> On Dec 13, 2017, at 10:02 AM, Nai Suan <<a href="mailto:shif422@gmail.com" target="_blank" class="">shif422@gmail.com</a>> wrote:<br class="">
><br class="">
> Dear Dennis Shea,<br class="">
>       Thank you for your reply.<br class="">
>       If I am right, the phases of the 1700-1960 sunspot numbers has a unique solution. This means Bloomfield’s 2000 (Second Edition) is wrong or the 1st complex demodulation example in NCL is wrong. I have no idea for another option.<br class="">
>       You mentioned NCL example was translated from Bloomfield’s subroutine. Is there any possible reason that the translation has some problems?<br class="">
>       Anyway, if you are interested, I can send Bloomfield’s 2000 book to you.<br class="">
>       All the best,<br class="">
> Frank<br class="">
><br class="">
><br class="">
>> On Dec 13, 2017, at 12:15 AM, Dennis Shea <<a href="mailto:shea@ucar.edu" target="_blank" class="">shea@ucar.edu</a>> wrote:<br class="">
>><br class="">
>> If the low-pass filtering (Lanczos) and smoothing (weighted running average) don't explain the differences... I do not know.<br class="">
>> I do not have Bloomfield's 1976 book readily available. That used the 1700-1960 sunspot numbers. As I recall, NCL's plots were 'identical' to those in the 1976 book.<br class="">
>> ----<br class="">
>> <a href="http://www.ncl.ucar.edu/Applications/spec.shtml" rel="noreferrer" target="_blank" class="">http://www.ncl.ucar.edu/Applic<wbr class="">ations/spec.shtml</a><br class="">
>><br class="">
>> Data Analysis: Spectral analysis, Complex Demodulation<br class="">
>><br class="">
>> The 1st complex demodulation example uses the 1700-1960 sunspots<br class="">
>> <a href="http://www.ncl.ucar.edu/Applications/Scripts/demod_cmplx_1.ncl" rel="noreferrer" target="_blank" class="">http://www.ncl.ucar.edu/Applic<wbr class="">ations/Scripts/demod_cmplx_1.<wbr class="">ncl</a><br class="">
>> ----<br class="">
>><br class="">
>> The 'demod_cmplx' function can be seen at:<br class="">
>><br class="">
>> %> less  $NCARG_ROOT/lib/ncarg/nclscrip<wbr class="">ts/csm/contributed.ncl<br class="">
>><br class="">
>> Basically, it is a translation (fortran-77  ===> NCL) of Bloomfield's 1976 f77 subroutine.<br class="">
>><br class="">
>><br class="">
>><br class="">
>><br class="">
>><br class="">
>><br class="">
>> On Tue, Dec 12, 2017 at 4:03 AM, Nai Suan <<a href="mailto:shif422@gmail.com" target="_blank" class="">shif422@gmail.com</a>> wrote:<br class="">
>> Dear colleague,<br class="">
>>         I have a question about how to explain the phase of the complex demodulation. I found that the phases of the sunspot in the figures 7.9 and 7.11 (see the attachment) in Bloomfield (2000)’s book (chapter 7 complex demodulation) were totally different with the ‘demod_cmplx_1_lg.png (see the attachment)’. Which is right? I believe the original sunspots in two examples are same and the different low-pass filter methods can not be used to explain this difference. How to explain the difference?<br class="">
>>         Hope to hear your answer.<br class="">
>>         All the best,<br class="">
>> Frank<br class="">
>><br class="">
>><br class="">
>><br class="">
>> ><br class="">
>> ><br class="">
>> ><br class="">
>> ><br class="">
>> ><br class="">
>><br class="">
>><br class="">
>> ______________________________<wbr class="">_________________<br class="">
>> ncl-talk mailing list<br class="">
>> <a href="mailto:ncl-talk@ucar.edu" target="_blank" class="">ncl-talk@ucar.edu</a><br class="">
>> List instructions, subscriber options, unsubscribe:<br class="">
>> <a href="http://mailman.ucar.edu/mailman/listinfo/ncl-talk" rel="noreferrer" target="_blank" class="">http://mailman.ucar.edu/mailma<wbr class="">n/listinfo/ncl-talk</a><br class="">
><br class="">
<br class="">
</div></div></blockquote></div><br class=""></div>
<span id="m_-8811402693050074741cid:25584A0B-9B9E-4553-BC2D-AA45205F78F3" class=""><demod_cmplx.ncl></span><span id="m_-8811402693050074741cid:CDA107A8-D82B-4519-B488-5B10B5ACBE86" class=""><demod_<wbr class="">bloomfield_1976.f></span><span id="m_-8811402693050074741cid:35F73114-E288-439B-816C-1408F77267E4" class=""><DEMODU_<wbr class="">nist.f></span></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></div></div></div></div></blockquote></div><br class=""></div>
<span id="cid:09125EBF-7982-49B9-8635-81ADD0C18B56"><sunspot_wolf.1700_1960.txt></span><span id="cid:7D5B49D4-E70B-49AC-B8FC-92EF5F5FBF22"><demod_ncl.f></span><span id="cid:C3322612-2B0B-4554-8CA6-58A62C7CDFA2"><aTest.ncl></span><span id="cid:A8FDF924-C553-48C1-A9DE-71BADB012D14"><bTest.ncl></span><span id="cid:0ACE9F57-5847-4929-AF33-A0839AFB91F8"><demod_cmplx_640.ncl></span></div></blockquote></div><br class=""></div></div></blockquote></body></html>