
IDL编程,读取一个二进制.dat文件
新手,IDL编程,读取一个二进制.dat文件,大小是5000*3000.当其中有个数值为-9999时,取改值周边4个位置数值的均值替换-9999,这个程序该怎么编?...
新手,IDL编程,读取一个二进制.dat文件,大小是5000*3000.当其中有个数值为-9999时,取改值周边4个位置数值的均值替换-9999,这个程序该怎么编?
展开
1个回答
展开全部
openr,lun,FILENAME,/get_lun
创建一个数组来存,要看你的数据是什么类型的了
比如长整型 data = lonarr(5000,3000)
再读取 readu,lun,data
在释放 free_lun,lun
然后再对dat进行处理
可以先获取-9999的位置
index = where(data eq -9999,count)
if count gt 0 then begin
转换坐标
for i = 0, count -1 do begin
yloc = index[i] / 5000
xloc = index[i] - yloc * 5000
这里还要你自己判断下这个点周围是不是有4个点 如果这个点正好出在编缘,直接下面这样会报错
data[xloc,yloc] = (data[xloc- 1,yloc] + data[xloc + 1,yloc] + data[xloc,yloc - 1] + data[xloc,yloc + 1]) / 4
endfor
endif
替换完了就可以了
创建一个数组来存,要看你的数据是什么类型的了
比如长整型 data = lonarr(5000,3000)
再读取 readu,lun,data
在释放 free_lun,lun
然后再对dat进行处理
可以先获取-9999的位置
index = where(data eq -9999,count)
if count gt 0 then begin
转换坐标
for i = 0, count -1 do begin
yloc = index[i] / 5000
xloc = index[i] - yloc * 5000
这里还要你自己判断下这个点周围是不是有4个点 如果这个点正好出在编缘,直接下面这样会报错
data[xloc,yloc] = (data[xloc- 1,yloc] + data[xloc + 1,yloc] + data[xloc,yloc - 1] + data[xloc,yloc + 1]) / 4
endfor
endif
替换完了就可以了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询