填充对应于行号和列号的零矩阵
问题描述:
我有一个矩阵(例如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]
我想做这个没有“for”循环的工作。
答
由于Sardar指出matrix indexing在文档中。您需要的具体命令是sub2ind
documented here。这将行,列下标对转换为线性索引。在A中所定义的行/列对
步骤1 GET线性索引
idx = sub2ind(size(B), A(:,1), A(:,2));
步骤2分配值这些索引在B到第3列的值A.
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
+0
你好,我非常感谢你的导游,非常感谢你。 – abbas
这是非常基本的。阅读[文档](https://www.mathworks.com/help/matlab/math/matrix-indexing.html) –
您以前的所有问题都有相当好的答案。您之前的任何问题都没有接受任何答案。考虑对已接受的最有帮助的答案进行upvoting /标记,以便向志愿帮助你的人员返回一些帮助。 –