<div dir="ltr"><div>Ok, I&#39;ve done some more investigation and testing and here is what I found.<br><br>First off, like filtering methods in general, the Butterworth filter was designed with electronic applications in mind, such as audio processing, and so the processed end of the series being processed with this filter attenuates to zero. In audio this is no big deal, but when looking at something like a climate time series this can be a problem.<br><br>I talked with one of the professors in my department who knows quite a bit about numerical methods, and he suggested padding the end of the series with 1.5*(order of filter/fca) zeros.  I am attaching a figure with the resulting filtered time series, with and without padding. <br><br></div><div>I tested this result with a variety of bandpass settings both narrow and wide, low pass and high pass, and with length of the time series, and the result is consistent. Without the zero padding, the signal attenuates to zero, but with the padding the filtered data follows the raw data.<br><br></div><div>here is the relevant code for what I did:<br><br>fca   = 1./48.<br>fcb   = 1./1200.<br>order = 6<br><br>opt   = True<br>opt@m = order<br><br>npad  = tointeger(1.5*(order/fca))<br><br>;-----------------------<br><br>fin   = addfile(&quot;/export1/Databank/NCEP_Month/surface/<a href="http://air.2m.mon.mean.nc">air.2m.mon.mean.nc</a>&quot;,&quot;r&quot;)<br>time  = fin-&gt;time<br>TIME  = cd_calendar(time,0)<br>tind  = ind(TIME(:,0).ge.minyr .and. TIME(:,0).le.maxyr)<br>ntind = dimsizes(tind)<br>t2m   = dim_avg_n(fin-&gt;air(tind,{minlat:maxlat},{minlon:maxlon}),(/1,2/))<br>do j  = 0,11<br>   t2m(j::12) = dim_rmvmean_n(t2m(j::12),0)<br>end do<br><br>dum   = new(ntind+npad,&quot;float&quot;)<br>dum   = 0<br>dum(0:ntind-1)  = t2m<br>dumf  = bw_bandpass_filter(dum,fca,fcb,opt,0)<br><br>t2mfpad     = dumf(0:ntind-1)<br>t2mfnopad   = bw_bandpass_filter(t2m,fca,fcb,opt,0)<br><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jun 15, 2015 at 5:43 PM, Dave Allured - NOAA Affiliate <span dir="ltr">&lt;<a href="mailto:dave.allured@noaa.gov" target="_blank">dave.allured@noaa.gov</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Danny,<div><br></div><div>The documentation for this filter says that it is optimized for narrow bandwidths.  The description goes on to mention certain shortcuts in its calculations.  Your settings describe a low pass filter with a very wide pass band, far to one end of the signals in your time series.  This is not what is meant by &quot;narrow bandwidth&quot;.</div><div><br></div><div>This is just speculation, but I think your settings may be breaking key assumptions within this filter&#39;s code implementation.  You may have chosen a filter function that is badly matched to your particular problem.  Perhaps, look at some of the other available NCL functions.  HTH.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>--Dave</div></font></span><div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Mon, Jun 15, 2015 at 11:51 AM, Daniel Barandiaran <span dir="ltr">&lt;<a href="mailto:dbarandiaran@gmail.com" target="_blank">dbarandiaran@gmail.com</a>&gt;</span> wrote:<br></span><div><div class="h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hi everyone,<br><br></div><div>I was trying out the bw_bandpass_filter function and found some unexpected results. The gist of the problem is that the end of the time series being filtered approaches a smoothed zero, even if the time series is doing something else entirely (see attached figure, consider bold blue line and shaded blue area). I imagine this is due to the internal workings of the filter itself, but regardless of that, does anyone have any ideas on &quot;fixing&quot; this? <br><br>Some details: I have fca set to 1/60., or 5 years, and fcb set arbitrarily large, i.e. 1/100000., so the filter essentially behaves as low pass. I am also making sure to not give the function any missing values.<br><br></div>--<br><div><div><div dir="ltr"><div>Danny Barandiaran<br></div><div>Ph.D. Candidate<br></div><div><div>Department of Plants, Soils, and Climate</div><div>Utah State University</div></div></div></div></div></div></blockquote></div></div></div></div></div></div>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><div>Danny Barandiaran<br></div><div>Ph.D. Candidate<br></div><div><div>Department of Plants, Soils, and Climate</div><div>Utah State University</div><div><br><div><br></div></div></div></div></div>
</div>