我想制作一个矩阵,其中数据在矩阵中,我可以将矩阵中的每个网格拉出一个长的lat点。数据持续3年以上,因此我还需要第三维度。
我现在拥有的是三个1437x159的纬度,长度和海冰数据。如何将它们组合成符合我上面提到的标准的3d矩阵?基本上,我希望能够说,我希望第47天的数据为-50S lat和50W lon,并且能够索引数组并找到答案。
谢谢!
答案 0 :(得分:0)
是的 - 这可以毫不费力地完成。我在分析大气数据方面做了类似的工作。
根本问题在于您按小时组织数据,网格随时间动态变化,您需要随时间分析数据。我会推荐两种方法中的一种。
方法1:网格重新取样
这涉及通过统一的标准化网格重新采样网格数据。使用Matlab ndgrid()
函数定义网格,然后使用interp2()
重新取样每个点,并将其连接到一个统一的3D矩阵中。然后,您可以使用interp3()
直接在此重新采样的数据中进行插值。这种方法涉及最少的编程,在重采样过程中会丢失一些原始数据。
方法2:动态插值
在数据对象周围定义一个自定义类包装器,比如说'SeaIce',并编写自己的SeaIce.interp3()
方法。该方法将加载每小时的网格信息,首先在横向维度中执行插值,然后在时间维度中执行插值。这确保了通过插值不会丢失任何信息,需要权衡更多编码。
在我的出版物“航空应用中的风分析”中详细描述了第二种方法(针对风域)。 Slides available here