pro calc_svd,m1,m2,n,d1,d2,u,v,l0,var,c1,c2 a=d1#transpose(d2)/(n+0.0) svdc,a,l0,u,v var=l0/total(l0) c1=v#d1 c2=u#d2 end file="skt.mon.mean.nc" file_id=ncdf_open(file) file_info=ncdf_inquire(file_id) nvars=file_info.nvars print, "No. of variables", nvars for var_id=0,nvars-1 do begin varinfo=ncdf_varinq(file_id, var_id) print, var_id, " ", varinfo.name endfor var_id=3 ncdf_attget, file_id, var_id, "missing_value", missing_value ncdf_attget, file_id, var_id, "scale_factor", scale_factor ncdf_attget, file_id, var_id, "add_offset", add_offset print,"missing_value", missing_value print, "scale_factor", scale_factor print, "add_offset", add_offset ncdf_varget,file_id, "lon", lon ncdf_varget,file_id, "lat", lat ncdf_varget,file_id, "time", time ncdf_varget,file_id, "skt", skt ncdf_close,file_id stop i1=80 i2=128 lon=lon(i1:i2) j1=31 j2=62 lat=lat(j1:j2) l1=0 l2=12*30-1 time=time(l1:l2) skt=skt(i1:i2,j1:j2,l1:l2) nlon=n_elements(lon) nlat=n_elements(lat) nt=n_elements(time) m=nlon*nlat d=fltarr(nlon*nlat,nt) for l=0,nt-1 do d(*,l)=reform(skt(*,*,l)) calc_svd,m,m,nt,d,d,u,v,l0,var,c1,c2 f=fltarr(nlon,nlat) !p.multi=[0,1,4] for imode=0,3 do begin f(*,*)=u(imode,*) contour,f,lon,lat endfor end