2020-10-17

MATLAB--reshape的妙用

    最近一段时间,都在使用MATLAB做信号处理,由于实验测量要求,有大量的数据需要进行拼接成接近512或2014个点后进行傅里叶变化,对于我这种基本没用过MATLAB的小白来说,将一个二维的矩阵转换成三维矩阵,我首先想到的就是用三层循环去拼接,直到那天看到之前一个师兄留下来的代码,发现他只用了一行代码就实现了我的三层循环才做到的内容,他就是利用了reshape这个函数。

我去专门学习了一下关于reshape

Matlab中关于reshape函数的调用有两种,一种是B = reshape(A,[m,n]);其意为将A矩阵转换为m行n列的矩阵B,这种必须要确保m*n的数值与A中元素的个数相同。例如下图所示的示例:

值得注意的是,reshape在进行矩阵的换维时,都是按矩阵的一列进行变换,比如下面这个例子,从A的第一列开始,形成的也是B的第一列。


同样,对于二维的矩阵我们也可以转换称三维的,比如下面的例子:


这样对于数据的降维与增维是特别方便的,而且能够很大的提高代码的时间复杂度,新技能get.