<div dir="ltr"><div>This type of question was recently answered on ncl-talk.</div><div><br></div><div>To avoid repeated emails, I extracted the pertinent section.</div><div>PLEASE look-at and think-about what is being done!</div><div>Add your own print statements to examine any issues.</div><div><br></div><div>This has not been tested on your data. There may be errors.</div><div>It is your responsibility to fix them. <br></div><div>+++++++++++++++++++++++++++++++++++++++++++++++++<br></div><div>hist_anom1=hist_anom(:,:,{-7},{160})   ;(ntim, ens) ; (240,100)</div><div>=====</div><div> nLen = ntim/2<br></div><div> spec  = new ( nLen, typeof(hist_anom1))<br> spec  = 0.0<br> z1   = 0.0<br> xtsVar= 0.0<br><br> iopt  = 0<br> jave  = 1               ; periodigram for each segment<br> pct  = 0.1<br>                      ; loop over  every ensemble member<br> do ns=0,nens-1         ; spectra for each ensemble member<br>   sdof  = specx_anal(hist_anom1(:.ns),iopt,jave,pct)<br>   spec  = spec + sdof@spcx     ; sum spectra<br>   xtsVar = xtsVar + sdof@xvari  ; sum ensemble member variances</div><div>                                                     ; sum z-traansformed lag-1 correlations<br></div><div>   z1   = z1  + 0.5*log((1+sdof@xlag1)/(1-sdof@xlag1)) ; Fischer z-transform<br> end do<br><br> spec  = spec/nens            ; average spectra ==> ensemble mean spectra<br> z1   = z1/nens              ; ensemble mean z=transformed lag1<br> xvari = xtsVar/nens           ; mean variance of ensemble members<br><br>                          ; create a new variable<br> ss       = (/ sdof /)<br> ss@dof  = 2*nens            ; # degrees freedom<br> ss@bw   = sdof@bw<br> ss@spcx  = spec<br> ss@xvari = xvari<br> ss@frq   = sdof@frq<br> ss@xlag1 = (exp(2*z1)-1)/(exp(2*z1)+1)  ; match specx_anal <br></div><div><br></div><div> printVarSummary(ss)</div><div><br></div><div>;************************************************<br>; plotting parameters<br>;************************************************<br> pltDir  = "./"<br> pltName = "ens_mean"<br> pltPath = pltDir+pltName<br> pltType = "png"<br><br> wks  = gsn_open_wks(pltType,pltPath)  <br><br> r = True                          ; plot mods desired<br> r@gsnMaximize  = True             ; blow up plot<br> r@tiMainString  = "???"                       ; title<br> r@tiXAxisString = "Frequency (cycles/day)"   ; xaxis<br> r@tiYAxisString = "Variance"          ; yaxis<br> splt = specx_ci(ss, 0.05, 0.95)         ; calc confidence interval<br> r@xyLineThicknesses  = (/2.,1.,1.,1./)  ; Define line thicknesses <br> r@xyDashPatterns    = (/0,0,1,1/)      ; Dash patterns <br> plot = gsn_csm_xy(wks,ss@frq, splt,r)<br></div><div><br></div><div>    <br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 3, 2020 at 7:08 AM Sri.durgesh Nandini-Weiss via ncl-talk <<a href="mailto:ncl-talk@ucar.edu" target="_blank">ncl-talk@ucar.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Dear ncl users,<br>
<br>
I am trying to perform power spectral analysis of a time series of <br>
ensemble data (time*ens==>20years*100ensemble to compute over the year <br>
and each ensemble member and than calculate the ensemble mean of the <br>
spectra.<br>
<br>
The best way would be to use specx_anal() and write it as a loop but <br>
this is where i am failing.<br>
<br>
I would later on like to know how to add the Markov red noise and the <br>
upper and lower confidence levels?<br>
<br>
would someone advice me on my script below?<br>
<br>
<br>
begin<br>
<br>
   f    = addfile ("<a href="http://anom_hist_zo_slr.nc" rel="noreferrer" target="_blank">anom_hist_zo_slr.nc</a>", "r")<br>
   hist_anom   = f->hist_anom<br>
   printVarSummary(hist_anom)<br>
<br>
   f1    = addfile ("<a href="http://anom_rcp45_zo_slr.nc" rel="noreferrer" target="_blank">anom_rcp45_zo_slr.nc</a>", "r")<br>
   rcp45_anom  = f1->rcp45_anom<br>
   printVarSummary(rcp45_anom)<br>
<br>
   dimx = dimsizes(hist_anom)<br>
   ntim = dimx(0)          ; 240<br>
   nens = dimx(1)          ; 100<br>
   nlat = dimx(2)          ; 45<br>
   nlon = dimx(3)          ; 90<br>
   lat1=nlat<br>
   lon1=nlon<br>
<br>
   nmos = 12<br>
   nyrs  = ntim/nmos      ; 20<br>
   printVarSummary(nyrs)<br>
<br>
<br>
;==================================================================<br>
; print ("Data read in - start calculations")<br>
; Region domain lat and lon, ensemble average<br>
;==================================================================<br>
<br>
  hist_anom1=hist_anom(:,:,{-7},{160}) ;(ntim, ens)<br>
  printVarSummary(hist_anom1)<br>
  aveX=dim_avg_n_Wrap(hist_anom1,(/1/))<br>
  printVarSummary(aveX)   ; [time]<br>
<br>
  rcp45_anom1=rcp45_anom(:,:,{-7},{160})               ;(ntim, ens)<br>
  printVarSummary(rcp45_anom1)<br>
  aveY=dim_avg_n_Wrap(rcp45_anom1,(/1/))<br>
  printVarSummary(aveY)    ; [time]<br>
<br>
<br>
  d  = 0                     ; detrending opt: 0=>remove mean <br>
1=>remove mean + detrend<br>
  sm = 7                   ; smooth periodogram:: should be at least <br>
3 and odd<br>
                                ; Average 7 periodogram estimates <br>
using modified Daniell<br>
  pct = 0.10                ; percent taper: (0.0 <= pct <= 1.0) 0.10 <br>
common.<br>
<br>
;==================================================================<br>
  ;i can either use ndtooned and carry out specx_anal on this or make a <br>
loop.<br>
<br>
  aveX = ndtooned(hist_anom1)<br>
  printVarSummary(aveX)<br>
<br>
  aveY = ndtooned(rcp45_anom1)<br>
  printVarSummary(aveY)<br>
<br>
  spec = specx_anal(aveX,d,sm,pct)<br>
  printVarSummary(spec)<br>
<br>
  spec1 = specx_anal(aveY,d,sm,pct)<br>
  printVarSummary(spec1)<br>
<br>
<br>
Thanx<br>
<br>
Sri<br>
<br>
<br>
-- <br>
Dr. Sri Nandini-Weiß<br>
Research Scientist<br>
<br>
Universität Hamburg<br>
Center for Earth System Research and Sustainability (CEN)<br>
Cluster of Excellence 'Climate, Climatic Change, and Society' (CLICCS)<br>
<br>
Bundesstrasse 53, 20146 Hamburg<br>
Tel: +49 (0) 40 42838 7472<br>
<br>
_______________________________________________<br>
ncl-talk mailing list<br>
<a href="mailto:ncl-talk@ucar.edu" target="_blank">ncl-talk@ucar.edu</a><br>
List instructions, subscriber options, unsubscribe:<br>
<a href="http://mailman.ucar.edu/mailman/listinfo/ncl-talk" rel="noreferrer" target="_blank">http://mailman.ucar.edu/mailman/listinfo/ncl-talk</a></blockquote></div>