如何将矢量转换为矩阵? (Matlab的)

时间:2016-11-08 07:28:21

标签: matlab matrix vector

我有一个大小为(1,9)的向量,其值如下:

 V= [0.5 0.1 0.1 0.9 0.5 0.1 0.9 0.9 0.5]

如何将矢量V转换为矩阵M,其大小为(3,3),其中第一行是矢量的前3个元素,第二行包含下一个元素向量的3个元素,并保持向量的所有其他元素的规则如下:

       0.5 0.1 0.1
M=     0.9 0.5 0.1
       0.9 0.9 0.5

对于不同大小的向量,例如(1,100),如何根据上述规则转换为(10,10)矩阵?

1 个答案:

答案 0 :(得分:4)

使用reshape,然后转置结果:

M = reshape(V, 3, 3).';

reshape将矢量转换为所需大小的矩阵。矩阵以 column-major 顺序创建。因此,仅使用reshape本身就会将元素放在列中。由于您希望元素由行填充,因此只需转置结果即可。

通常,您希望将N元素向量V重新整形为大小为M的方形矩阵sqrt(N) x sqrt(N)。您可以针对一般情况执行此操作:

N = sqrt(numel(V));
M = reshape(V, N, N).';

这当然假设V中的元素总数是一个完美的正方形。