【问题标题】:Vector to matrix with row sum 1行和为 1 的向量到矩阵
【发布时间】:2018-09-29 10:46:47
【问题描述】:

我有一个总和为 m 的逻辑 1×n 向量。现在,我需要将其转换为 m×n 矩阵,使行和等于 1。

vector (1-by-8) with sum 4
[0 1 0 0 1 0 1 1]

matrix (4-by-8) with row sum 1
[0 1 0 0 0 0 0 0;
 0 0 0 0 1 0 0 0;
 0 0 0 0 0 0 1 0;
 0 0 0 0 0 0 0 1]

有没有一种数学上有效的方法,无需计算总和、创建一个空矩阵、循环遍历向量并逐行添加 1?

【问题讨论】:

    标签: matlab matrix vector


    【解决方案1】:

    我认为在这种情况下,根据您的输入,您甚至不需要计算总和。 您可以定义一个大小为 n 的单位矩阵,然后使用输入向量从中抽取所需的行:

    I = eye(n);
    y = I(x, :) ; % Output Matrix. x is the input vector
    

    【讨论】:

      【解决方案2】:

      这是另一种方法,使用sparse

      matrix = full(sparse(1:m, find(vector), 1, m, n));
      

      【讨论】:

        猜你喜欢
        • 2014-01-02
        • 2021-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-22
        • 1970-01-01
        • 2016-04-01
        相关资源
        最近更新 更多