Open windcirculation opened 2 years ago
Hi Syed,
Thanks for asking. The filtered MJO pattern, period and amplitude in the figure you attached seem reasonable.
Have you already successfully filtered the OLR of MJO band? What problem do you confront?
I filter MJO by using "kf_filter" function in NCL, like:
mjo_olr = kf_filter(olr_anomaly, obs_per_day, min_period, max_period, min_wavenumber, max_wavenumber, min_depth, max_depth, wave_name)
Hope I've answered your confusion.
Hi, Thanks for your help. The thing is I am not familiar at all with the signal filtering as well as ncl. I want to filter the daily olr anomaly data to check the MJO only. How can i remove first three harmonics? I am not sure if I am doing it right, would you please have a look?
; These files are loaded by default in NCL V6.2.0 and newer ; load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" ; load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl" ; load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" ; These files still have to be loaded manually load "$NCARG_ROOT/lib/ncarg/nclscripts/contrib/kf_filter.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/contrib/time_axis_labels.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/contrib/cd_string.ncl" ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; Main ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> begin
mis = -999 mis@_FillValue = -999
; set the wave parameters tMin = 40 tMax = 60 kMin = 1 kMax = 5 hMin = mis hMax = mis waveName = "MJO"
; number of timesteps in data for each day obsPerDay = 1
; number of days to filter on each side of the period we're interested in bufferDays = 90
; open the file inDir = "./" inFileName = "olr.day.anomalies.nc" inFile = addfile( inDir+inFileName, "r" )
; get the time units and set the first and last times that we want timeUnits = inFile->time@units startDate = ut_inv_calendar( 1980, 07, 01, 00, 0, 0, timeUnits, 0 ) endDate = ut_inv_calendar( 2021, 12, 31, 00, 0, 0, timeUnits, 0 )
; calculate our number of weights if( isStrSubset( timeUnits, "days" ) ) then buffer = bufferDays 1 else if( isStrSubset( timeUnits, "hours" ) ) then buffer = bufferDays 24 else print( "DANGER! DANGER! Unexpected time units" ) return end if end if
filtStart = startDate - buffer filtStart@units = timeUnits filtEnd = endDate + buffer filtEnd@units = timeUnits
;---Read the data and filter it print( "Reading..." ) inData = inFile->olr_anom({filtStart:filtEnd},{-30:30},:) origData = dim_avg_n_Wrap( inData, 1 )
print( "Filtering..." ) filtData = kf_filter( origData(time|:,lon|:), obsPerDay \ , tMin, tMax, kMin, kMax, hMin, hMax, waveName )
printVarSummary( filtData ) print( min(filtData) + " " + max(filtData) )
;---Open workstation, and read and combine color map data
print( "Thank you, come again." + systemfunc("date") ) diro ="./" filo="mjo_latlon_983days.nc" system("/bin/rm -f "+diro+filo) ; rm any pre-existing file f = addfile(diro+filo, "c") filedimdef(f,"time",-1,True) f->LP=filtData end
Hi, I want to know how to filter OLR data for MJO. I want to say that I checked your scripts, and you suggest running those twice in there. I have daily OLR mean data from NCEP. Please suggest to me how to filter it for MJO. Any leads would be appreciated. I guess it is 40 to 60 days of filtration to OLR data from -30 to 30 lats. The figures should look something similar to the below figure attached,
Thanks, Syed