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

从向量创建矩阵,使其高度和宽度为matlab中的倍数,matlab,matrix,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的任意倍数。这

例如,我在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是列数

它只是更改行数和列数,但不考虑高度和宽度条件所需的可能功率。我没有具有
vec2mat
功能的
通信工具箱。

另一种可能的替代思想是初始化一个全零的矩阵,然后赋值。但在这一点上,我被卡住了。因此,请帮助我了解matlab专家。

我想这就是你的意思:

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]

如何确定行数?你的例子没有使用4的最近倍数…我的意思是我得到一个任意长度的原始矩阵A。我试着把它转换成一个新的矩阵,它的宽度或高度可以固定。例如
4x4、4x8、4x12等。啊,所以行数是4的倍数,而不是元素数。“我现在明白了,”比克说,“如果你认为这个问题好的话,请投赞成票。我正试图得到反馈,看看这个问题是否被正确定义。因此,这真的是一种提问的艺术。这似乎奏效了!谢谢大家!@烧杯看看这个!