MATLAB三维数组转为二维数组(时间序列分析中很有用)

在MATLAB中三维数组转二维的方法

一、写该程序的初衷

在处理时间序列遥感数据的时候,我之前的做法是:

  1. 将时间序列数据读取为三维矩阵;
  2. 将该数据保存为BIP格式;
  3. 在每个像元上进行循环,取出其第三维(比如有46景影像,对应46个值)
  4. 对取出的时间序列进行计算。

二、小结

  1. 该方法确实可以进行计算并得到结果,但是对于较大的区域时,会造成计算速度慢的问题。
    原因是,要获取每个像元的时间序列,必须要进行三个for循环。
  2. 而下面的方法仅需要一个for循环。

三、优化方法示例

% Reshape array
a=[[1,2,3];[4,5,6]]
b=[[11,22,33];[44,55,66]]
bb=[[111,222,333];[444,555,666]]
c(:,:,1)=a
c(:,:,2)=b
c(:,:,3)=bb
% cc=reshape(c,[6,2])
ccc=reshape(c,[6,3])

结果如下:

MATLAB三维数组转为二维数组(时间序列分析中很有用)_第1张图片

你可能感兴趣的:(matlab)