【问题标题】:Complete matrix with vectors as indices in matlab在matlab中以向量作为索引的完整矩阵
【发布时间】:2014-03-19 16:34:38
【问题描述】:

假设我们有一个矩阵 A1 和两个向量 v1 和 v2,如下所示:

A1=zeros(5, 5);
v1=[1 2 3];
v2=[5 5 4];

有没有办法用 v1 和 v2 作为索引一一替换 A1 的元素?即在 A1(1, 5)、A1(2, 5) 和 A1(3, 4) 中插入一些元素。

以下是 v1 和 v2 的所有组合。我只想要一张一张。即,v1(1) 与 v2(1),v1(2) 与 v2(2),依此类推。

A1(v1, v2) 

【问题讨论】:

    标签: matlab vector matrix


    【解决方案1】:

    基本上你有行和列信息,需要将它们转换成线性索引,以索引到A1。为此,请使用sub2ind -

    A1(sub2ind(size(A1),v1(1),v2(1))) = 12
    A1(sub2ind(size(A1),v1(2),v2(2))) = 10
    A1(sub2ind(size(A1),v1(3),v2(3))) = 9
    

    输出 -

    A1 =
    
         0     0     0     0    12
         0     0     0     0    10
         0     0     0     9     0
         0     0     0     0     0
         0     0     0     0     0
    

    如果您将这些值存储在某个数组 array1 中,请使用它来获得与上述相同的结果 -

    array1 = [12 10 9];
    A1(sub2ind(size(A1),v1,v2)) = array1;
    

    【讨论】:

      【解决方案2】:

      将向量转换为线性索引:

      A1=zeros(5, 5);
      v1=[1 2 3];
      v2=[5 5 4];
      
      ind=sub2ind(size(A1), v1, v2);
      A1(ind(1))=1
      
      A1 =
      
           0     0     0     0     1
           0     0     0     0     0
           0     0     0     0     0
           0     0     0     0     0
           0     0     0     0     0
      

      等等

      【讨论】:

        猜你喜欢
        • 2016-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-19
        • 2016-10-02
        • 2022-11-02
        相关资源
        最近更新 更多