Matlab 填充与行数和列数对应的零矩阵
我有一个矩阵(例如a),它有n*3维,第一列是行号,第二列是列号,第三列是高度值 我有一个I*j维的零矩阵。现在我想把高度值(第三列)放在对应于该高度的行(第一列)和列(第二列)的零矩阵(B)中 例如:Matlab 填充与行数和列数对应的零矩阵,matlab,loops,matrix,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列放到零矩阵中,以此
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 98 0 0 0 0;0 0 0 0 0 0 0;0 0 0 0 108 0 0 0 0]
我想在没有“for”循环的情况下完成这项工作。正如Sardar在文档中指出的那样。您需要的特定命令是sub2ind
。这将行、列下标对转换为线性索引
步骤1:获取A中定义的行/列对的线性索引
idx = sub2ind(size(B), A(:,1), A(:,2));
步骤2:将B中索引处的值分配给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
这是非常基本的。阅读这篇文章,你之前的所有问题都有很好的答案。您尚未接受之前任何问题的任何答案。考虑一下投票/标记最有帮助的答案,作为回报来帮助那些志愿帮助你的人。你好,我非常感谢你的指导。非常感谢。