您好我正在使用MATLAB,我有一个“z”列向量,其维度为(9680 x 1)。我想重塑它,以便有一个维度(44 x 220)的数组“z”。我正在做以下事情:
z=reshape(z,44,220);
我也尝试过:
z=reshape(z,[44,220]);
但输出不对(至少第一行)。我可以通过比较输出矩阵和初始向量来看到它。
我只需要将列向量的220个第一个位置作为矩阵第一行的长度,然后将向量的下一个220个位置作为矩阵的第二行,依此类推直到获得44行。
我做错了什么?谢谢你的帮助。
答案 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