我曾尝试在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
在Matlab倍数的权力这里所需的矩阵是8x4,或者高度或宽度是4的任意倍数。如果我们保留任何一个维度(高度或宽度)以适应所有元素并用零填充额外元素,则这意味着最接近的4的倍数。我试图重塑像这样
reshape([c(:) ; zeros(rem(nc - rem(numel(c),nc),nc),1)],nc,[])
这里c是原始矢量或矩阵,NC是列数。
它只是改变行列数的数量,但没有考虑到的高度和宽度的条件所需的可能的权力。我没有具有vec2mat
功能的Communications Toolbox
。 另一种可能的替代思路是用全零初始化一个矩阵,然后进行赋值。但在这一点上我卡住了。所以请帮助我的matlab专家。
如何确定的行数?你的例子没有使用4的最接近倍数... – beaker
我的意思是我得到一个任意长度的原始矩阵A.我尝试将其转换为宽度或高度可以固定的新矩阵。例如'4x4,4x8,4x12'等等。 – Boggartfly
啊,所以行数是4的倍数,而不是元素的数量。我现在明白了。 – beaker