| Hi 
I worked with NDVI time series with MODIS sensor, My recommendation would be to first make a Layer Stacking (ENVI) of 24 images, sort by date, if you want to create a statistic for your images...with  a classified image... You can modify this script ....
close,/all
year=['2000','2001','2002','2003','2004','2005','2006','2007','2008']
month=['01','02','03','04','05','06','07','08','09','10','11','12'] 
;define dimension
dim=[197,387]
 ;--------------------------------
  ;Crea los vectores de salida
  ;imprime los resultados de la media en un archivo .txt
  filetxt1= '/tesis/ndvi_avg/ndvista/sta/mean.txt'
  filetxt2= '/tesis/ndvi_avg/ndvista/sta/median.txt'
  filetxt3= '/tesis/ndvi_avg/ndvista/sta/min.txt'
  filetxt4= '/tesis/ndvi_avg/ndvista/sta/max.txt'
  filetxt5= '/tesis/ndvi_avg/ndvista/sta/area.txt'
  ;defino formato
  fmt='(20(f16.3))'
  
  openw,3,filetxt1
  openw,4,filetxt2
  openw,5,filetxt3
  openw,6,filetxt4
  openw,7,filetxt5
  
  printf,3,'Year','Month','Mean.Cl1','Mean.Cl.2','Mean.Cl3','Mean.Cl4','Mean.Cl5','Mean.Cl6','Mean.Cl7','Mean.Cl8','Mean.Cl9'
  printf,4,'Year','Month','Median.Cl1','Median.Cl.2','Median.Cl3','Median.Cl4','Median.Cl5','Median.Cl6','Median.Cl7','Median.Cl8','Median.Cl9'
  printf,5,'Year','Month','Min.Cl1','Min.Cl.2','Min.Cl3','Min.Cl4','Min.Cl5','Min.Cl6','Min.Cl7','Min.Cl8','Min.Cl9'
  printf,6,'Year','Month','Max.Cl1','Max.Cl.2','Max.Cl3','Max.Cl4','Max.Cl5','Max.Cl6','Max.Cl7','Max.Cl8','Max.Cl9'
  printf,7,'Year','Month','Area.Cl1','Area.Cl.2','Area.Cl3','Area.Cl4','Area.Cl5','Area.Cl6','Area.Cl7','Area.Cl8','Area.Cl9'
;Define matriz avg y clasif
;--------------------------------
  ;Abre imagene de clasificacion
  ;--------------------------------
 
for i = 0,8 do begin
file='/tesis/ndvi_avg/nd/ndn/'+year[i]+'_clasif'  ;Se debe cambiar el path a lo que corresponda
 clsf=make_array(dim,/BYTE)  ; columna,fila, tipo
 openr,1,file
 readu,1,clsf
 close, 1
 
  ;abro im?genes promedio
  for mes = 0,11 do begin
     filavg ='/tesis//ndvi_avg/ndvista/MOD13A3.B0.'+year[i]+month[mes]  ;Se debe cambiar el path a lo que corresponda
     im_avg=make_array(dim,/float)
     close, 1
     openr,1,filavg
     readu,1,im_avg
  ;--------------------------------
  
  ;--------------------------------
  ;calcula media
  ;nombre de los pixeles que corresponden a los climas
   cl1=where(clsf eq 1,n1)
   cl2=where(clsf eq 2,n2)
   cl3=where(clsf eq 3,n3)
   cl4=where(clsf eq 4,n4)
   cl5=where(clsf eq 5,n5)
   cl6=where(clsf eq 6,n6)
   cl7=where(clsf eq 7,n7)
   cl8=where(clsf eq 8,n8)
   cl9=where(clsf eq 9,n9)
     ;calcula el area por zona
     area=make_array(9,/float)
     area[0]=n1*0.926^2
     area[1]=n2*0.926^2
     area[2]=n3*0.926^2
     area[3]=n4*0.926^2
     area[4]=n5*0.926^2
     area[5]=n6*0.926^2
     area[6]=n7*0.926^2
     area[7]=n8*0.926^2
     area[8]=n9*0.926^2
  
  ;Extrae valores por clase
  ;Define matriz resultado
   results_mean=make_array(9,/float)
   results_median=make_array(9,/float)
   results_max=make_array(9,/float)
   results_min=make_array(9,/float)
   results_zero=make_array(9,/float)
   clima=cl1
   ;chapito=mean(im_avg[clima])
   for kg=0,8 do begin
     case kg of
       0: clima=cl1
       1: clima=cl2
       2: clima=cl3
       3: clima=cl4
       4: clima=cl5
       5: clima=cl6
       6: clima=cl7
       7: clima=cl8
       8: clima=cl9
     endcase
  if (clima[0] eq -1) then continue
     results_mean[kg]=MEAN(im_avg[clima])
     results_median[kg]=median(im_avg[clima])
     results_max[kg]=max(im_avg[clima])
     results_min[kg]=min(im_avg[clima])
     results_zero[kg]=(histogram(im_avg[clima],min=0))[0]
     wait, 0.0001
    endfor
  printf,3,year[i],month[mes],results_mean[0],results_mean[1],results_mean[2],results_mean[3],results_mean[4],results_mean[5],results_mean[6],results_mean[7],results_mean[8],format=fmt
  printf,4,year[i],month[mes],results_median[0],results_median[1],results_median[2],results_median[3],results_median[4],results_median[5],results_median[6],results_median[7],results_median[8],format=fmt
  printf,5,year[i],month[mes],results_min[0],results_min[1],results_min[2],results_min[3],results_min[4],results_min[5],results_min[6],results_min[7],results_min[8],format=fmt
  printf,6,year[i],month[mes],results_max[0],results_max[1],results_max[2],results_max[3],results_max[4],results_max[5],results_max[6],results_max[7],results_max[8],format=fmt
  printf,7,year[i],month[mes],area[0],area[1],area[2],area[3],area[4],area[5],area[6],area[7],area[8],format=fmt
  
  
  close, 1
  endfor
endfor
close,/all
end
 |