我在matlab中尝试了多个解决方案来转换矢量,例如
A = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
进入
B= [ 1 2 3 4 ]
5 6 7 8
9 10 11 12
13 14 15 16
17 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
这里所需的矩阵是8x4,或者更确切地说,高度或宽度是4的任意倍数。如果我们保持任何一个维度(高度或宽度)固定以适合所有元素并填充额外的,则这意味着最接近的4的倍数。零的元素。我试过像这样重塑了
reshape([c(:) ; zeros(rem(nc - rem(numel(c),nc),nc),1)],nc,[])
这里c是原始矢量或矩阵,nc是列数。
它只是改变行数和列数,但没有考虑高度和宽度条件所需的可能功率。我没有Communications Toolbox
具有vec2mat
功能的%w(a b c d e f).first(2)
# => ["a", "b"]
。
另一种可能的替代思想是用全零初始化矩阵然后分配。但此时我被困住了。所以请帮助我matlab专家。
答案 0 :(得分:1)
我认为这就是你的意思:
n = 4;
A = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17];
B = zeros(n,ceil(numel(A)/n^2)*n);
B(1:numel(A)) = A;
B = B'
B = [ 1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0]