重塑列向量
Reshape column vector
您好,我正在使用 MATLAB,我有一个 "z" 列向量,其维度为 (9680 x 1)。我想重塑它以获得尺寸为 (44 x 220) 的数组 "z"。我正在执行以下操作:
z=reshape(z,44,220);
我也试过:
z=reshape(z,[44,220]);
但是输出不对(至少第一行)。我可以通过比较输出矩阵和初始向量来看到它。
我只需要列向量的第一个220个位置作为矩阵第一行的长度,然后向量接下来的220个位置作为矩阵的第二行等等,直到得到44行。
我做错了什么?感谢您的帮助。
Matlab 以列主要格式存储矩阵值(这在整形期间很重要)。因为你想要行专业,你需要做
z = reshape(z, [220 44]).';
即之后转置。
我会使用 的方法。
作为替代方案,通信工具箱中有一个 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
您好,我正在使用 MATLAB,我有一个 "z" 列向量,其维度为 (9680 x 1)。我想重塑它以获得尺寸为 (44 x 220) 的数组 "z"。我正在执行以下操作:
z=reshape(z,44,220);
我也试过:
z=reshape(z,[44,220]);
但是输出不对(至少第一行)。我可以通过比较输出矩阵和初始向量来看到它。
我只需要列向量的第一个220个位置作为矩阵第一行的长度,然后向量接下来的220个位置作为矩阵的第二行等等,直到得到44行。
我做错了什么?感谢您的帮助。
Matlab 以列主要格式存储矩阵值(这在整形期间很重要)。因为你想要行专业,你需要做
z = reshape(z, [220 44]).';
即之后转置。
我会使用
作为替代方案,通信工具箱中有一个 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