我有一个矩阵(例如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]
我想在没有"为"循环。
答案 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