【问题标题】:How to convert a vector into a matrix ? (Matlab)如何将向量转换为矩阵? (Matlab)
【发布时间】:2016-11-08 07:28:21
【问题描述】:

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

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

如何将向量V 转换为大小为 (3,3) 的矩阵 M,其中第一行是向量的前 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) 的矩阵?

【问题讨论】:

    标签: matlab matrix vector


    【解决方案1】:

    使用reshape,然后转置结果:

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

    reshape 将向量转换为所需大小的矩阵。矩阵按列主要顺序创建。因此,仅使用 reshape 本身会将元素放置在列中。由于您希望元素按行填充,因此一个技巧是简单地转置结果。

    通常,您希望将N 元素向量V 重塑为大小为sqrt(N) x sqrt(N) 的方阵sqrt(N) x sqrt(N),以行优先顺序排列。对于一般情况,您可以这样做:

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

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

    【讨论】:

      猜你喜欢
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 2014-12-25
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      相关资源
      最近更新 更多