StaMPS报错Index in position 2 exceeds array bounds. Error in ps_load_initial_gamma (line 108)

@[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这里开始重做

  1. back geocodeing
    在这里插入图片描述
  • 检查每一个数据,数值正常才可以进行下一步处理
    在这里插入图片描述
  1. ESD(可选)
    在这里插入图片描述

  2. deburst
    在这里插入图片描述

  3. subset,建议做完deb再subset
    这一步得到subset_dataname_Orb_Stack_esd_deb 文件

  4. ifg,这里要注意更改默认选项
    基于上一步的文件制作ifg,得到subset_dataname_Orb_Stack_esd_deb_ifg
    在这里插入图片描述

  5. 导出StaMPS的PSI数据
    基于subset_dataname_Orb_Stack_esd_deb(上)和subset_dataname_Orb_Stack_esd_deb_ifg(下)

  6. 重做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向重叠像素数量
  1. 检查PATCH里面是否有空值,尤其是ij,没有就进行下一步

2.5 在matlab里面执行执行stamps

stamps(1,1)
……
……
……
PS_LOAD_INITIAL_GAMMA: Finished
STAMPS: Finished

这样就说明解决了标题中的问题。

当然,这个问题有很多个原因,具体因素具体分析。


感谢阅读

猜你喜欢

转载自blog.csdn.net/qq_41159191/article/details/129698393