【问题标题】:Construct this matrix based on two vectors MATLAB基于两个向量 MATLAB 构造此矩阵
【发布时间】:2014-07-23 14:16:23
【问题描述】:

我确实有 2 个向量,我想构建一个基于 r 和 c 的矩阵

r =

 1
 2
 4
 6
 8

c =

 2
 4
 6
 8
10

我想构造一个矩阵 A 使得 A(1,2)=A(2,4)=A(4,6)=A(6,8)=A(8,10)=1 其他元素0.

请帮忙

【问题讨论】:

    标签: matlab vector matrix


    【解决方案1】:

    您可以将构造函数用于稀疏矩阵:

    full(sparse(r,c,1))
    

    顺便说一句,如果您想将其应用于具有许多零的大型矩阵,请使用稀疏矩阵。对于有很多零的矩阵,它使用的内存要少得多:

    sparse(r,c,1)
    

    【讨论】:

      【解决方案2】:

      您可以使用linear indexing 来完成此操作。

      首先,构造一个由零组成的矩阵:

      A = zeros(max(r),max(c));
      

      然后将元素设置为1:

      A( size(A,1) * (c-1) + r ) = 1;
      

      【讨论】:

      • 我相信第二个 10 可以替换为 size(A,1) 以使这个更通用。
      • 我认为10s 都应该替换为max(r),实际上第一个应该像 Luis Mendo 那样预先分配。不过很好的解决方案!
      【解决方案3】:

      首先将A 预分配给适当大小的零矩阵(由rc 中的最大值给出)。然后,要处理所需的条目,您需要转换为 linear indexing,您可以使用 sub2ind 轻松完成:

      A = zeros(max(r),max(c));
      A(sub2ind(size(A),r,c)) = 1;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多