@[TOC](StaMPS报错Index in position 2 exceeds array bounds. Error in ps_load_initial_gamma (line 108))
0 问题描述
- 环境:
- Ubuntu2004
- matlab2020a
- StaMPS4.1-beta
在matlab中输入stamps(1,1)
之后,出现报错
Index in position 2 exceeds array bounds.
Error in ps_load_initial_gamma (line 108)
rg=rgn+ij(:,3)*rps;
Error in stamps (line 263)
ps_load_initial_gamma;
1 相关问题
一般SNAP、StaMPS相关问题,在欧空局的step forum里面都可以搜索到解决方案,但是开源软件的bug太多,有时候不稳定,所以生产的数据可能也不太好用,因此,虽然报错相同,但根本原因千差万别,因此解决方案也各不一样。
1.1 step forum 中相关问题的帖子
snap2stamps-package-a-free-tool-to-automate-the-snap-stamps-workflow
tips:如何在step forum中搜索自己的问题?
按下啊Ctrl+F即可,如果搜索不到,可以点击in this topic右边的×,这样就可以在所有的step forum的帖子里面搜索问题。
2 本案例问题分析
2.1 断点调试
- 由于stamps(1,1)是在stamps中处理的第1步,这里出现问题,根据报错,找到
ps_load_initial_gamma (line 108)
,在matlab中打开相line 108,点击108右边的横线,出现红点,这个步骤表示断点调试。
- 鼠标放到相应位置(ij),提示empty 0*0 double
2.2 找到ij文件
- 由上一步发现ij是empty的,检查mt_prep_snap中的处理是否合格,经检查发现,PATCH_里面有问题,ij数据确实是空的,只有0bytes
2.3 检查mt_prep_snap中的处理是否合格
-
分析在terminal中执行mt_prep_snap后弹出的提示中是否包括报错error和警告warning信息
-
找到warning,说明数据缺失有问题,找到当期的数据,发现stack里面的0621是坏数据,但之前步骤产生的数据都是正常的,因此从stack这里开始重做
2.4 重做mt_prep_snap
根据2.3节中的报错信息,从stack这里开始重做
- back geocodeing
- 检查每一个数据,数值正常才可以进行下一步处理
-
ESD(可选)
-
deburst
-
subset,建议做完deb再subset
这一步得到subset_dataname_Orb_Stack_esd_deb 文件 -
ifg,这里要注意更改默认选项
基于上一步的文件制作ifg,得到subset_dataname_Orb_Stack_esd_deb_ifg
-
导出StaMPS的PSI数据
基于subset_dataname_Orb_Stack_esd_deb(上)和subset_dataname_Orb_Stack_esd_deb_ifg(下) -
重做mt_prep_snap
在导出的数据文件夹中打开terminal,输入
mt_prep_snap master_date PATH 0.4 5 5 50 200
# matser_date 是主影像日期
# PATH 是当前输出的文件夹路径
# 0.4 是振幅色散值(0.4-0.42为合理值)
# 5 5 是patch数据量,前一个5是距离range向的patch数量,后一个是azimuth向patch数量,也可以设置其他的
# 50 200 是patch之间的距离range向和方位azimuth向重叠像素数量
- 检查PATCH里面是否有空值,尤其是ij,没有就进行下一步
2.5 在matlab里面执行执行stamps
stamps(1,1)
……
……
……
PS_LOAD_INITIAL_GAMMA: Finished
STAMPS: Finished
这样就说明解决了标题中的问题。
当然,这个问题有很多个原因,具体因素具体分析。
感谢阅读