Matlab:在特定位置创建一个带有1的零矩阵

Ka-*_*Yip 0 matlab

例如,我可以创建一个zeros(100).但我希望第58行和第59列的输入为1.但是我需要临时变量和多行才能执行此操作.

一个.让这个矩阵成为M.我怎么能在一行中做到这一点?M = ....


PS

湾 更好的是,有时我想要零矩阵的两个或更多条目为1.再次,我该怎么做?

如果我能做到.在一行中,当然我可以添加它们.但是有没有特殊的功能来填充零矩阵条目1?

NLi*_*ros 7

首先,请记住,单行表达式并不总是最有效的.阅读/理解也可能更难.

一种方法是使用稀疏矩阵

以下示例创建一个10x10零矩阵,其中包含[5,2](第5行,第2列)和[7 5]

full(sparse([5 7],[2 5],1,10,10))
Run Code Online (Sandbox Code Playgroud)

使用full它从一个稀疏矩阵转换为"满"一个


另一种(更快但可能不那么直观)替代方案是使用 accumarray

accumarray([5 2;7 5],1,[10,10])
Run Code Online (Sandbox Code Playgroud)

请记住,上面的索引值直接在表达式中使用,以获得一行,更好的选择是单独创建它们

points = [5 2; 7 5]
Run Code Online (Sandbox Code Playgroud)

也许,

rowIdx = [5 7];
colIdx = [2 5];
Run Code Online (Sandbox Code Playgroud)