IDL编程,读取一个二进制.dat文件

新手,IDL编程,读取一个二进制.dat文件,大小是5000*3000.当其中有个数值为-9999时,取改值周边4个位置数值的均值替换-9999,这个程序该怎么编?... 新手,IDL编程,读取一个二进制.dat文件,大小是5000*3000.当其中有个数值为-9999时,取改值周边4个位置数值的均值替换-9999,这个程序该怎么编? 展开
 我来答
vcos1986
推荐于2018-04-11 · TA获得超过644个赞
知道小有建树答主
回答量:238
采纳率:100%
帮助的人:232万
展开全部
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
替换完了就可以了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式