重塑列向量

时间:2015-04-26 10:42:00

标签: matlab matrix vector reshape

您好我正在使用MATLAB,我有一个“z”列向量,其维度为(9680 x 1)。我想重塑它,以便有一个维度(44 x 220)的数组“z”。我正在做以下事情:

z=reshape(z,44,220);

我也尝试过:

z=reshape(z,[44,220]);

但输出不对(至少第一行)。我可以通过比较输出矩阵和初始向量来看到它。

我只需要将列向量的220个第一个位置作为矩阵第一行的长度,然后将向量的下一个220个位置作为矩阵的第二行,依此类推直到获得44行。

我做错了什么?谢谢你的帮助。

2 个答案:

答案 0 :(得分:6)

Matlab以列主格式存储矩阵值(这在重塑期间很重要)。既然你想要行专业,你需要做

z = reshape(z, [220 44]).';

即。事后调换。

答案 1 :(得分:2)

我使用Andreas H.的方法。

作为替代方案,通讯工具箱中的vec2mat功能就是这样做的,甚至可以根据需要填充缺失值:

>> x = 11:18;
>> vec2mat(x,4) %// no padding needed
ans =
    11    12    13    14
    15    16    17    18
>> vec2mat(x,5) %// padding needed; with 0 by default
ans =
    11    12    13    14    15
    16    17    18     0     0
>> vec2mat(x,5,-1) %// padding needed; with specified value
ans =
    11    12    13    14    15
    16    17    18    -1    -1