填充对应于行号和列号的零矩阵

时间:2017-10-17 20:41:15

标签: matlab loops matrix

我有一个矩阵(例如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放在行= 5和列= 4中,并在零矩阵等中将105放在行= 1和列= 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]

我想在没有"为"循环。

1 个答案:

答案 0 :(得分:0)

正如Sardar指出matrix indexing在文档中。您需要的具体命令是sub2ind documented 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