在MATLAB中重塑数组

时间:2014-05-16 13:37:44

标签: matlab

我有一个32768 * 8数组,我想将其转换为1 * 262144数组。我已经使用了MATLAB命令重塑,但重新整形的问题是逐行更改矩阵,然后将其附加到列。我也用过(V :);功能,但它也重塑形状,所以没有用。

我希望保持二进制数据的完整性。所以  0F 4B = 0000 1111 0100 1011 ......等应该是这样的,而不是重塑命令所做的。

有什么想法吗? 谢谢!

3 个答案:

答案 0 :(得分:5)

如果你想按行主要顺序重塑它,只需先转置:

reshape(MyMatrix.', 1, [])

所以.'是解决方案的关键所在。 (请注意,如果您不使用复数,那么'.'会做同样的事情。我只是使用.'来完全正确,但在绝大多数情况下我只会使用'

答案 1 :(得分:3)

我肯定会像以前的答案一样使用reshape:。但是,如果您有通讯工具箱,也可以使用vec2mat

vec2mat(MyMatrix, numel(MyMatrix))

答案 2 :(得分:2)

您也可以先转置矩阵,然后再调用(:)命令!如果你想要它是行向量,请确保将向量转置回来。

MyMatrix = MyMatrix.';
MyVector = (MyMatrix(:)).';

另外在语法上是正确的(受Dan启发 - 见下文),我也使用了.',因为使用'会调用复数转置。它不仅会转换你的矢量,它还会共轭你的元素。如果您想计算复矢量的幅度,这实际上非常有用,因为幅度平方的定义是(a + ib)*(a - ib)。如果我没记错的话,Loren Shure的一篇文章(我不记得哪一篇)提到为了这个目的,将复杂的转置放在MATLAB中。

但是,如果您的所有元素都是真实的,那么您可以使用'.'。与哪一个无关。