怎么做逐象元一元线性回归分析

我要给两幅栅格图层做逐象元一元线性回归分析,有没有哪个大神教教我

2个回答

;IDL程序
pro tendency
;设置编译环境
COMPILE_OPT IDL2
;设置参数,后台调用ENVI函数环境
ENVI,/RESTORE_BASE_SAVE_FILES,/NO_STATUS_WINDOW
ENVI_BATCH_INIT, log_file='batch.txt'

;�����������·�����������͸����������
;=================================================================================
in_name='H:\TEST\TAST\EVI_YEAR_CHUY10000\' ;��Ҫ�����ʱ������դ��ͼ�����ڵ��ļ���

out_slp='H:\TEST\TAST\slope_R_K_EVI\slp.tif' ;б�ʼ�����դ���ļ��Ĵ洢·�����ļ���

out_R='H:\TEST\TAST\slope_R_K_EVI\R.tif' ;���ϵ�������դ���ļ��Ĵ洢·�����ļ���

;=================================================================================

filenames=file_search(in_name,'*.tif')

;��ȡ������Ȼ���Ϣ��ͼ��·��
name=filenames[0]
;打开一个图像,获取行列数,投影信息
envi_open_file,name,r_fid=fid,/no_realize;directory and file name, to be modified
if (fid eq -1) then begin
info=DIALOG_MESSAGE('未找到数据,请确认路径或文件名格式是否正确!')
return
endif
envi_file_query, fid, ns=ns, nl=nl, nb=nb, dims=dims
map_info=envi_get_map_info(fid=fid)

;获取文件个数
n = n_elements(filenames)

;根据文件名,获得因子的时间序列
t=fltarr(n)
for i=0,n-1 do begin
time = strmid(filenames[i],strpos(filenames[i],'2'),4)

t[i] = float(time)

endfor

;������ά���鱣�����创建三维数组保存数据
data=fltarr(ns,nl,n)

for i=0,n-1 do begin
envi_open_file,filenames[i],r_fid=fid,/no_realize;directory and file name, to be modified
if (fid eq -1) then begin
info=DIALOG_MESSAGE('未找到数据,请确认路径或文件名格式是否正确!')
return
endif

data[*,*,i]=envi_get_data(fid=fid,dims=dims,pos=0)

endfor

;逐像元拟合
slp=fltarr(ns,nl) ;创建数组保存斜率计算结果
r=fltarr(ns,nl) ;创建数组保存相关系数计算结果

for i=0,ns-1 do begin
for j=0,nl-1 do begin

  ;�������Իع飬����б��
  lin=linfit(t,data[i,j,*])      
  slp[i,j]=lin[1]

  ;�������ϵ��
  r[i,j]=correlate(t,data[i,j,*])

endfor

endfor

;���ENVI��ʽ
ENVI_WRITE_ENVI_FILE,slp,out_dt=4,map_info=map_info,ns=ns,nl=nl,nb=nb,out_name=out_slp

ENVI_WRITE_ENVI_FILE,r,out_dt=4,map_info=map_info,ns=ns,nl=nl,nb=nb,out_name=out_R

end

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐