2017-10-17 70 views
-2

我有一个矩阵(例如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”循环的工作。

+3

这是非常基本的。阅读[文档](https://www.mathworks.com/help/matlab/math/matrix-indexing.html) –

+1

您以前的所有问题都有相当好的答案。您之前的任何问题都没有接受任何答案。考虑对已接受的最有帮助的答案进行upvoting /标记,以便向志愿帮助你的人员返回一些帮助。 –

回答

0

由于Sardar指出matrix indexing在文档中。您需要的具体命令是sub2inddocumented 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