从向量创建矩阵,使其高度和宽度为matlab中的倍数
例如,我在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的任意倍数。这
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的倍数,而不是元素数。“我现在明白了,”比克说,“如果你认为这个问题好的话,请投赞成票。我正试图得到反馈,看看这个问题是否被正确定义。因此,这真的是一种提问的艺术。这似乎奏效了!谢谢大家!@烧杯看看这个!