;**************************读取光谱数据*********************
Pro READ_ASCII
fn=dialog_pickfile();用对话框打开文件并获得文件名
openr,lun,fn,/get_lun;读取光谱数据
data=fltarr(2,10000);创建一个浮点型数组,每个元素的初始值为0
i = 0
while eof(lun) ne 1 do begin;循环读取一行数据
tdata=fltarr(2)
readf,lun,tdata ;readf读取的数据存储到temp中
data[*,i]=tdata ;进行每一行的存储
i=i+1
endwhile
free_lun,lun ;不再对文件进行操作
nb=i
data=data[*,0:i-1];去除空行
wv = transpose(data[ 0 ,*]);波长
ref = transpose(data[ 1 ,*])*0.01;反射率
;************************绘制原始光谱曲线*******************
plot,wv,ref,xtitle='Wavelength(nm)',ytitle='reflectance',background='FFFFFF'xl,color='000000'xl,/nodata,$
xrange=[min(wv),max(wv)],xstyle=1,ystyle=16
oplot,wv,ref,color='FFFF00'xl
;************************进行均值滤波***********************
ref_smooth=ref
width=5;滤波窗口尺寸
for i = width/2,nb-1-width/2 do ref_smooth[i]=mean(ref[i-width/2:i+width/2])
oplot,wv,ref_smooth,color='0000FF'xl
;****************************保存文件***********************
o_fn=dialog_pickfile();选择打开的文件名,进行保存
openw,lun,o_fn,/get_lun
printf ,lun,['Wavelength','Origin_Ref','Smoothed_ref'],format='(3a15)';
printf ,lun,[transpose(wv),transpose(ref),transpose(ref_smooth)],format='(i15,2f15.4)'
free_lun,lun
end