从向量创建矩阵,使其高度和宽度是matlab中的倍数

时间:2017-04-02 17:12:52

标签: matlab matrix

我在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专家。

1 个答案:

答案 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]