在MATLAB中三维数组转二维的方法
一、写该程序的初衷
在处理时间序列遥感数据的时候,我之前的做法是:
- 将时间序列数据读取为三维矩阵;
- 将该数据保存为BIP格式;
- 在每个像元上进行循环,取出其第三维(比如有46景影像,对应46个值)
- 对取出的时间序列进行计算。
二、小结
- 该方法确实可以进行计算并得到结果,但是对于较大的区域时,会造成计算速度慢的问题。
原因是,要获取每个像元的时间序列,必须要进行三个for循环。 - 而下面的方法仅需要一个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])
结果如下: