【发布时间】:2016-03-31 18:35:41
【问题描述】:
在 GNU Octave/MATLAB 中编码时,我遇到了一个我自己无法解决的简单问题:我试图通过使用存储在大批。让我用一个例子说清楚:
给定:
A = zeros(5, 3)
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
我想通过使用辅助数组 B 中的值作为子索引来逐行选择 A 矩阵中的一些元素。
即。以下B数组
B = [ 1 3 2 1 3 ]'
1
3
2
1
3
应该读作:
1 -> index '1' on first row (element [1, 1])
3 -> index '3' on second row (element [2, 3])
2 -> index '2' on third row (element [3, 2])
1 -> index '1' on fourth row (element [4, 1])
3 -> index '3' on fifth row (element [5, 3])
因此,如果我们将值“1”分配给使用上述标准选择的元素,则生成的矩阵将是:
1 0 0
0 0 1
0 1 0
1 0 0
0 0 1
我相信这是一个简单的操作,并且我确信必须有一种方法来实现所描述的行为,而不必遍历矩阵 A 中的行。
谢谢。
编辑:重写问题,使其(希望)不那么混乱。
【问题讨论】:
-
这些索引确实是错误的! Matlab 应该如何知道 3 是指第一行还是第三行的 3。将它们索引为 A(1:5,B) 并且它可能会起作用
-
问题比较混乱,能否重写或删除?
-
@smci 我已经尽力了,如果您仍然感到困惑,请随时进一步编辑。
-
啊,你的意思是稀疏矩阵到密集矩阵的转换。