【问题标题】:filling a zero matrix corresponding to row and column numbers填充对应于行号和列号的零矩阵
【发布时间】:2017-10-17 20:41:15
【问题描述】:

我有一个矩阵(例如 A),它有 n*3 维,第一列是行号,第二列是列号,第三列是高度值。

我有一个 i*j 维的零矩阵。现在我想将高度值(第三列)放入对应于该高度的行(第一列)和列(第二列)的零矩阵(B)中。

例如:

A=[5,4,108;1,3,105;3,3,98]
B=[0 0 0 0 0 0 0;0 0 0 0 0 0 0;0 0 0 0 0 0 0;0 0 0 0 0 0 0;0 0 0 0 0 0 0]

现在我想将 108 放入 row=5 和 column=4 放入零矩阵,并将 105 放入 row=1 和 column=3 放入零矩阵等。

B=[0 0 105 0 0 0 0;0 0 0 0 0 0 0;0 0 98 0 0 0 0;0 0 0 0 0 0 0;0 0 0 108 0 0 0]

我想在没有“for”循环的情况下完成这项工作。

【问题讨论】:

  • 这是非常基本的。阅读documentation
  • 你之前的所有问题都有很好的答案。您之前的任何问题都没有接受任何答案。考虑将最有帮助的答案投票/标记为已接受,以向自愿帮助您的人回报一些帮助。

标签: matlab loops matrix


【解决方案1】:

正如 Sardar 指出的 matrix indexing 在文档中。您需要的具体命令是sub2inddocumented here。这会将行、列下标对转换为线性索引。

第 1 步获取 A 中定义的行/列对的线性索引。

idx = sub2ind(size(B), A(:,1), A(:,2));

第 2 步将 B 中那些索引处的值分配给 A 中第 3 列的值。

B(idx) = A(:,3)

B =

     0     0   105     0     0     0     0
     0     0     0     0     0     0     0
     0     0    98     0     0     0     0
     0     0     0     0     0     0     0
     0     0     0   108     0     0     0

【讨论】:

  • 您好,非常感谢您的指导。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多